【问题标题】:How to define multiple initBinders如何定义多个initBinders
【发布时间】:2013-07-30 16:51:34
【问题描述】:

是否可以在单个控制器中拥有多个 initBinder 方法?每个 InitBinder() (参见代码)依赖于一个唯一的请求处理程序,例如在 url: "/update/account" 上调用 initBinder() 并在 "update/account/pass" 上调用 initBinderOne()?

我希望所有更新都使用一个控制器而不是多个。请指教。

@Controller
@RequestMapping(value="/uodate/account")
public class UpdateController {

@RequestMapping(method=RequestMethod.GET)
    public String updateAccount(@ModelAttribute("account") Account account...){
        ..
    }

    @RequestMapping(method=RequestMethod.POST)
    public String update(@Valid Account account...){
        ...
    }

@RequestMapping(value="/pass", method=RequestMethod.GET)
    public String updatePass(@ModelAttribute("account") Account account...){
        ...
    }

    @RequestMapping(value="/pass",method=RequestMethod.POST)
    public String updatePass(@Valid Account account...){
        ...
    }


@InitBinder("account")
    public void initBinder(WebDataBinder binder){
        binder.setValidator(validateAccount);
        binder.setAllowedFields(new String[]{"accountId","accountname","firstName",
                "lastName","address"});

    }


@InitBinder("account")
    public void initBinderOne(WebDataBinder binder){
        binder.setValidator(validatePassword);
        binder.setAllowedFields(new String[]{"accountId","password});

    }   

【问题讨论】:

    标签: spring model-view-controller spring-mvc spring-mvc-initbinders


    【解决方案1】:

    Spring 不支持将多个验证器附加到单个命令。但是,您可以为不同的命令定义多个 @InitBinder 方法。例如,您可以将以下内容放在单个控制器中并验证您的 user1 和 user2 参数:

    @InitBinder("user1")
    protected void initUser1Binder(WebDataBinder binder) {
        binder.setValidator(new User1Validator());
    }
    
    @InitBinder("user2")
    protected void initUser2Binder(WebDataBinder binder) {
        binder.setValidator(new User2Validator());
    }
    

    【讨论】:

    • ...以及如何让 initUser2Binder() 响应特定的处理程序,例如“更新/帐户/通过”?
    猜你喜欢
    • 2019-06-05
    • 2019-11-17
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多