我想验证请求参数,它只是一个字符串值。网上的大多数示例都讨论了使用自定义验证器验证域对象。但我想为String值编写一个验证器。如何实现?
@Controller
@RequestMapping("/base")
class MyController{
//value needs to be validated.
@RequestMapping("/sub")
public String someMethod(@RequestParam String value, BindingResult result){
if(result.hasErrors()){
return "error";
}
//do operation
return "view";
}
}
我想使用Spring中已有的Validator接口,而不是AOP或任何IF条件
答案 0 :(得分:1)
您的控制器无法验证参数,因为BindingResult
应遵循ModelAttribute
,而不是RequestParam
。
因此,如果您想使用Spring MVC自动验证,您应该使用包含字符串的类作为ModelAttribute:
class MyController {
@RequestMapping("/sub")
public String someMethod(@ModelAttribute Params params, BindingResult result){
if(result.hasErrors()){
return "error";
}
//do operation with params.value
return "view";
}
public static class Params {
// add eventual JSR-303 annotations here
String value;
// getter and setter ommited for brievety
}
}
当然,这假设您将验证器放入WebBinder
,例如通过控制器的@InitBinder
注释方法。
答案 1 :(得分:0)
//value needs to be validated.
@RequestMapping("/sub")
public String someMethod(@RequestParam String value, BindingResult result) throws SomeException {
if (!ValidationUtils.isValid(value)) {
throw new SomeException("Some text");
}