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