当前位置: 首页 > 知识库问答 >
问题:

Spring RequestBody可选验证

楚墨一
2023-03-14
@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);

    ....
}

共有1个答案

傅英喆
2023-03-14

您可以使用Spring的@validated,并使用groups。如果我理解正确,一些值会被设置,另一些不会。因此,问题只在于空检查。您希望暂时允许空值。

public interface 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;
public HashMap update(
    @PathVariable(value = "id")int id,
    @Validated(NullAllowed.class) @RequestBody Client clientData)

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

看看这个:

 类似资料:
  • 我有以下请求json 我试图验证这个json,我的要求是,如果ParameterB存在,那么里面肯定会有一个列表shd存在,否则ParameterB是可选的。例如,如果ParameterB本身只是不存在,那么shd不是一个问题。 我正在寻找相同的java验证注释。我在key和value上使用了@NotNull,但不能决定在ParameterB上使用什么,因为它是list所在的数组 我在Parame

  • 我有一个请求,比如我必须为此编写GET。要求是,当我有一个值时,响应必须是来自数据库的特定记录“xyz”。但是如果请求是即没有值,它必须从数据库中检索所有值。 为了实现这一点,我在请求中加入了(@RequestParam(value=“name”,required=false)字符串名)。i、 e将该值标记为可选 但问题是当我的请求是也就是说,如果没有值,我必须将“request is inval

  • 我正在尝试使用Keycloak配置Spring Boot应用程序以使其具有可供经过身份验证和未经身份验证的用户访问的endpoint。对于经过身份验证的用户,我想返回一些额外信息。这是我试图实现的一个简单示例: application.properties: 到目前为止,我只对这两种情况中的一种起作用。如果我使用上面的安全约束保护endpoint,那么只有经过身份验证的用户才能访问该endpoin

  • 我正在用java编写一个必须在我的工作环境中运行的程序。这是我的代码片段: 在我的家庭网络上,这工作得非常好,但在商业网络上,我会遇到以下错误: onnection.getSocketException:软件导致连接中止:recv在java.net.SocketInputSonquerer.runRead0(本机方法)在onquerer.java:44SocketInputStream.read(

  • 我有一个DTO,有几个字段,用户名,密码和电子邮件所有这些字符串。 我也有一个列表,我想作为一个可选的,这意味着它不必从表单中传递,可以留空。 这应该在前端有效: 因此,我们应该: javax中是否有@OptionalField注释之类的内容。验证。限制? 还是我唯一的选择是两个独立的DTO?

  • 问题内容: 我有一条路由,需要经过身份验证和未经身份验证的用户使用。我用来启用身份验证,但是它可以防止任何未经身份验证的用户访问路由(正常)。 如何允许未经身份验证的用户也访问路由? 似乎没有可以传递给我的护照策略中的选项。 问题答案: 您可以通过扩展现有实例来创建自己的实例: 然后在您的控制器上使用此代码: