如何仅将init活页夹应用于方法?我进行了很多搜索以找到答案。根据{{3}},@InitBinder
中的值是应该使用此init-binder方法的命令/表单属性和/或请求参数的名称。我只想将模型字段列入特定处理程序方法的黑名单。以下是我的代码。
@InitBinder("saveCustomerProfile")
public void initBinder(WebDataBinder binder)
binder.setDisallowedFields(new String[]{"cbr1"});
}
以下是我的Handler方法签名。
@RequestMapping(method= RequestMethod.POST, value="/saveCustomerInfo.htm")
public ModelAndView saveCustomerProfile( @ModelAttribute @Valid CustomerProfile customerProfile, BindingResult result, HttpServletRequest request)throws Exception{
String[] suppressedFields = result.getSuppressedFields();
if (suppressedFields.length > 0) { throw new Exception("You've attempted to bind fields that aren't allowed by @InitBinder: "+ StringUtils.arrayToCommaDelimitedString(suppressedFields));
}}
当我删除@Initbinder
'值'时,不允许的字段正在设置,并引发异常。即,它在整个控制器中全局工作。
如何限制它仅用于特定方法?当/saveCustomerInfo.htm处理程序方法正在调用时,我想禁止customerProfile
模型中的字段'cbr1'字段(仅适用于此方法)。
我引用了docs来实现此目的,但无法正常工作。有人可以帮忙吗?
答案 0 :(得分:1)
@InitBinder使用命令/表单属性的名称。它不适用于方法名称。在您的情况下,应提供@ModelAttribute(“ saveCustomerProfile”),它将与特定命令绑定。
公共ModelAndView saveCustomerProfile(@ModelAttribute(“ saveCustomerProfile”)@Valid CustomerProfile customerProfile,BindingResult结果,HttpServletRequest请求)引发异常{