将 @InitBinder 初始化外部化到 WebBindingInitializer 中
数据绑定初始化有两种主要方法,但老式方法有一个缺点,我无法弄清楚。这种注释方式很棒:
@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 中传递给它的。那么我该如何设置活页夹呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没有办法在 xml 配置中进行设置。您必须实现自定义的 WebBindingInitializer ... ConfigurableWebBindingInitializer 显然缺少设置允许和限制字段的可能性...
或者您可以投票 SPR-8601
There is no way of setting it up in xml configuration. You must implement your custom WebBindingInitializer ... The ConfigurableWebBindingInitializer is obviously missing the possibility of setting up allowed and restricted fields...
Or you can vote up SPR-8601