如果我使用@InitBinder而沒有限制它,它使用@RequestBody正常工作來驗證我的對象。@InitBinder在春季開機不能使用@RequestBody
@InitBinder
private void initBinder(WebDataBinder binder) {
binder.setValidator(validator);
}
@RequestMapping(method=RequestMethod.POST)
public CustomerQuickRegisterEntity saveNewCustomer(@Valid @RequestBody CustomerQuickRegisterEntity customerEntity,BindingResult result)
{
if(result.hasErrors())
{
return new CustomerQuickRegisterEntity();
}
return customerQuickRegisterRepository.save(customerEntity);
}
但問題是,當我把它限制在做它作爲@InitBinder("customerEntity")
它不是驗證對象只是一個對象。所以我已經通過stackoverflow進行搜索,發現@InitBinding
只適用於註釋爲@ModelAttribute
的對象。然後我的問題是,它與@RequestBody
工作正常,當我使用它作爲@InitBinder
,但當我使用它作爲@InitBinder("customerEntity")
......它爲什麼如此呢? 是否有任何其他的方法來驗證具有@RequestBody
由於綁定框架('@ ModelAttribute')與用於'@ RequestBody'的消息轉換框架完全不同,它不能與'@ RequestBody'一起使用。使用'@ RequestBody'時不使用活頁夾。帶參數的方法總是被調用,帶有參數的方法只被調用名爲'customerEntity'的模型對象,它不會被調用。 – 2014-11-25 06:29:17
但是,當我將它用作'@ InitBinding'而不將其限制爲任何特定對象時,它可以正常使用'@ RequestBody'。這是令人困惑的 – MasterCode 2014-11-25 06:32:08
@DineshShende看看[這裏](http://stackoverflow.com/questions/17341543/initbinder-not-working-for-specific-model-attribute) – 2014-11-25 06:32:49