Ple*_*mor 3 java validation spring spring-mvc
我按照本教程创建了自定义验证器:http: //codetutr.com/2013/05/29/custom-spring-mvc-validation-annotations/
根据这个,可以使用JSR-303验证注释验证请求aguments:https://raymondhlee.wordpress.com/2015/08/29/validating-spring-mvc-request-mapping-method-parameters/
我的自定义ConstraintValidator永远不会被调用.这是我的代码:
控制器:
@RestController
@RequestMapping(value = "/json")
@Validated
public class JsonResource {
@RequestMapping(method = POST, consumes=APPLICATION_JSON_VALUE"))
public void postJson(@SafeHtml @RequestBody JsonNode jsonQuery){
// post a foo
}
}
Run Code Online (Sandbox Code Playgroud)
SafeHtml注释:
@Documented
@Constraint(validatedBy = {SafeHtmlJsonValidator.class})
@Target( {ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface SafeHtml {
String message() default "{SafeHtml}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Run Code Online (Sandbox Code Playgroud)
自定义ConstraintValidator:
@Component
public class SafeHtmlJsonValidator implements ConstraintValidator<SafeHtml, JsonNode> {
@Override
public void initialize(SafeHtml constraintAnnotation) {}
@Override
public boolean isValid(JsonNode value, ConstraintValidatorContext context) {
// validate my JSON
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是SafeHtmlJsonValidator.isValid()永远不会被调用.
用Spring 4.2.6.RELEASE测试
如果您不想将所有内容转换为DTO可以添加的内容MethodValidationPostProcessor
@Bean
public MethodValidationPostProcessor methodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
Run Code Online (Sandbox Code Playgroud)
这将允许您直接向方法字段添加验证注释
喜欢
@RestController
@RequestMapping(value = "/json")
@Validated
public class JsonResource {
@RequestMapping(method = POST, consumes=APPLICATION_JSON_VALUE"))
public void postJson(@SafeHtml @RequestBody JsonNode jsonQuery){
// post a foo
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2076 次 |
| 最近记录: |