Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc 如果我在一个控制器中使用两个@InitBinder,那么它如何属于两个特定的BindingResult?_Spring Mvc - Fatal编程技术网

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.)