Есть два основных способа инициализации привязки данных, но у oldschool есть недостаток, который я не могу понять. Этот способ аннотации великолепен:
@InitBinder("order")
public void initBinder(WebDataBinder binder) {
// Problem is that I want to set allowed and restricted fields - can be done here
binder.setAllowedFields(allowedFields.split(","));
}
, но я не могу сделать это с помощью ConfigurableWebBindingInitializer. Прежде всего, экземпляр связующего создается в AnnotationMethodHandlerAdapter, и инициализатор передается экземпляру связующего где-то в HandlerMethodInvoker, поэтому я не могу его настроить ... Я не могу сделать что-то вроде этого:
<bean id="codesResolver" class="org.springframework.validation.DefaultMessageCodesResolver" />
<bean id="binder" class="org.springframework.web.portlet.bind.PortletRequestDataBinder" scope="prototype">
<property name="allowedFields" value="${allowedFields}" />
<aop:scoped-proxy />
</bean>
<bean id="webBindingInitializer" class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
<property name="messageCodesResolver" ref="codesResolver" />
</bean>
Потому что экземпляр связывателя передается в него в handlerAdapter. Как я могу настроить переплет?