我想将org.springframework.validation.Errors传递给CodeValidator类。
但是,由于我没有使用RequestBody / RequestPart / ModelAttribute,因此无法将Errors放在变量后面的方法param中。
我将@RequestParam用于代码变量,并且我想使用实现org.springframework.validation.Validator的CodeValidator类进行验证。
这是我的代码
@RequestMapping(value = "/check-code", method = RequestMethod.POST)
public ResponseEntity<Object> checkCode(@RequestParam("code") String code, Errors errors) {
codeValidator.validate(code, errors);
if(errors.hasErrors()) {
return ResponseEntity.badRequest().body("Errors");
}
return ResponseEntity.ok("");
}
,这是我的代码的错误结果:
An Errors/BindingResult argument is expected to be declared immediately after the model attribute, the @RequestBody or the @RequestPart arguments to which they apply: public org.springframework.http.ResponseEntity com.example.myapp.controller.CodeController.checkCode(java.lang.String,org.springframework.validation.BindingResult)
我该怎么做才能将CodeValidator与@RequestParam一起使用?
已更新: CodeValidator的代码
@Service
public class CodeValidator implements Validator {
@Override
public void validate(Object target, Errors errors) {
String code = ((String) target);
if(code == null || code.isEmpty()) {
errors.rejectValue("code", "", "Please fill in Code.");
}
}
}
答案 0 :(得分:0)
您是否使用验证程序创建了注释? 否则,请查看一个用于使用spring进行自定义验证的小示例/教程:https://www.baeldung.com/spring-mvc-custom-validator
(编辑),如果您使用的是Spring Boot,则可能需要在Spring配置中添加一个MethodValidationPostProcessor bean,以启用@requesParam的自定义验证。