Как мне применить init binder только к методу? Я много искал, чтобы найти ответ на этот вопрос. Согласно docs Значение в @InitBinder
- это имена атрибутов команды / формы и / или параметров запроса, к которым должен применяться этот метод init-binder. Я хочу занести поле модели в черный список только для определенного метода-обработчика. Следующий код - мой код.
@InitBinder("saveCustomerProfile")
public void initBinder(WebDataBinder binder)
binder.setDisallowedFields(new String[]{"cbr1"});
}
Ниже приведена моя подпись метода обработчика.
@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
'value', запрещенные поля устанавливаются, и он выдает исключение. Т.е. он работает глобально для всего контроллера.
Как я могу ограничить его использование только для определенного метода? Я хочу запретить поле 'cbr1' в модели customerProfile
, когда вызывается метод обработчика /saveCustomerInfo.htm (только для этого метода).
Я упомянул ссылку , чтобы реализовать это, но не работает .. кто-нибудь может помочь?