Spring mvc 如果我在一个控制器中使用两个@InitBinder,那么它如何属于两个特定的BindingResult?
下面是我的控制器类中的代码Spring mvc 如果我在一个控制器中使用两个@InitBinder,那么它如何属于两个特定的BindingResult?,spring-mvc,Spring Mvc,下面是我的控制器类中的代码 @Controller @RequestMapping("/library/*") public class HelloController { @Autowired @Qualifier("booksValidator") private Validator booksValidator; @Autowired @Qualifier("loginValidator") private Validator login
@Controller
@RequestMapping("/library/*")
public class HelloController {
@Autowired
@Qualifier("booksValidator")
private Validator booksValidator;
@Autowired
@Qualifier("loginValidator")
private Validator loginValidator;
@InitBinder("login")
private void initUserBinder(WebDataBinder loginBinder) {
loginBinder.setValidator(loginValidator);
}
@InitBinder("book")
private void initBooksBinder(WebDataBinder booksBinder) {
booksBinder.setValidator(booksValidator);
}
@RequestMapping(value="welcome", method = RequestMethod.POST)
public String printWelcome(@Validated @ModelAttribute("user") User user, BindingResult login, ModelMap model) {
}
@RequestMapping(value="add", method = RequestMethod.POST)
public String addBooks(@Validated @ModelAttribute("books") Books books, BindingResult book, ModelMap model) {enter code here
}
}
@InitBinder(“登录”)属于-->BindingResult登录
@InitBinder(“书本”)属于-->BindingResult书本
我该怎么办?
请建议我。。。
:(我建议您将其分为两个独立的控制器。一个用于处理您的用户/登录,另一个用于处理书籍。因此,类似于LoginController的东西有用于登录的init binder,BookController有用于验证书籍的书籍验证程序。Spring控制器可以有多个
@InitBinder
方法。但是您没有正确使用注释的值。根据InitBinder
javadoc关于值参数的说明,在此处指定模型属性名称或请求参数名称将init binder方法限制为那些特定的属性/参数
因此,在您的示例中,应该使用
modeldattribute
名称而不是BindingResult
参数名称,即@InitBinder(“用户”)
和@InitBinder(“书籍”)
而不是(分别)@InitBinder(“登录”)
和@InitBinder(“书籍”)
不可能在单个控制器中完成吗?非常感谢Serge Ballesta.)