gpt4 book ai didi

java - Spring RequestBody 可选验证

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:07:02 33 4
gpt4 key购买 nike

我有一个 REST API Controller ,如下面的代码。如果我使用 @valid 注释,客户实体的每个字段都被控制以进行验证。

@ResponseBody
@RequestMapping(value = API.UPDATE_CLIENT, produces = ResponseType.JSON, method = RequestMethod.POST)
public HashMap update(
@PathVariable(value = "id")int id,
@RequestBody Client clientData
) {

clientLogic.update(id, clientData);

....
}

客户的实体包含大约 5 个字段(id、姓名、地址、电子邮件、电话)。当我更新此记录时,我不会发送 RequestBody 中的所有 5 个字段。我只想验证来自 RequestBody。

最佳答案

可以改用 spring 的 @Validated 并使用 groups。如果我理解正确,将设置一些值,其他则不会。因此,问题 仅与 Null 检查有关。您希望暂时允许空值。

(1) 创建一个接口(interface)作为

public interface NullAllowed {}

(2) 将检查分配给 NullAllowed

@Email(groups = NullAllowed.class) //email allows null, so you are good
private String email;

@NotNull //skip this check - not assigned to NullAllowed.class
@Size(min=1, groups = NullAllowed.class)
private String name;

(3) 使用@Validated 并指定要验证的组

public HashMap update(
@PathVariable(value = "id")int id,
@Validated(NullAllowed.class) @RequestBody Client clientData)

只有标有 NullAllowed.class 的检查才会被验证。


检查一下:

关于java - Spring RequestBody 可选验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40334202/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com