Java 验证Spring引导中的输入数据

Java 验证Spring引导中的输入数据,java,spring-boot,Java,Spring Boot,我正在做一个spring boot项目。我正在构建一个PUT/POST API,它在请求体中采用布尔数据类型。问题是每当我传递一个整数值,比如12,13,-15。。。等等,它将其转换为true(这是布尔的默认行为),但我的疑问是,它们是否是一种在这里验证的方法,因此只需要0,1,true和false。我尝试将regex添加到validation.properties和@ESAPI注释到我的模型中,但我了解到数据规范化发生在验证之前。所以我被这个问题困住了,我该如何解决这个问题 这是一个PUT请求

我正在做一个spring boot项目。我正在构建一个PUT/POST API,它在请求体中采用布尔数据类型。问题是每当我传递一个整数值,比如12,13,-15。。。等等,它将其转换为true(这是布尔的默认行为),但我的疑问是,它们是否是一种在这里验证的方法,因此只需要0,1,true和false。我尝试将regex添加到validation.properties和@ESAPI注释到我的模型中,但我了解到数据规范化发生在验证之前。所以我被这个问题困住了,我该如何解决这个问题

这是一个PUT请求。 这是请求主体

{
  "access": true,

  "prefLanguage": "English",

  "prefTimeZone": "USA"
}
我的模型定义为

public class Consent implements Serializable {

    @ESAPIPattern(validateWithPattern = "acess", required = true)
    private String acess;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ESAPIPattern(allowNull = true,validateWithPattern = "prefTimeZone")
    private String prefTimeZone;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @ESAPIPattern(allowNull = true,validateWithPattern = "prefLanguage")
    private String prefLanguage;

... getters and setters 
}

这里我希望“access”只接受true | false或0 | 1,我不希望它接受任何其他整数值。

您可以使用spring提供的上下文验证程序。您可以创建注释@BoolenValidator并将其放入请求参数或路径变量中

public boolean isValid(String value, ConstraintValidatorContext context) {
boolean isValid = true;

if (isNull(value) || !(value==0|| value==1)) {
  isValid =  addViolation(value, "must be 0 or 1");
}
return isValid;
}

你能添加你的代码片段吗?有些,可能还提供有关上下文的更多信息,并特别询问您需要帮助的地方?{“acess”:true,“prefLanguage”:“USA”,“prefTimeZone”:“USA”}这里access是一个布尔值,我需要将它绑定到true或false或0或1,但是我认为如果它一定是真的|假的,那对我来说就行了,请在原始问题中添加代码片段,而不是在注释中。此外,仅使用JSON是不够的,请提供您遇到问题的代码。读一个好问题。