3

我正在使用第三方库,其中包含我希望能够通过 Spring(3.2 版)表单编辑的对象。问题在于该对象不使用 Java bean 命名约定,因为在某些情况下属性可能是动态的。相反,对象具有类似object.getAttr("attribute_name")和的方法object.setAttr("attribute_name", value)。我很容易编写 BeanWrapper 的实现来包装这种类型的对象,因为有一些方法可以查询哪些属性可用等。

我也不需要自定义编辑器,因为属性大多是内置类型。我所需要的只是一种自定义数据绑定的方法或找到一些其他方法来插入我的自定义 BeanWrapper,以便 Spring 的表单标记在绑定表单值时知道如何找到对象上的属性。看起来这应该相当容易(这就是为什么 BeanWrapper 是一个接口,对吧?)但我只是没有看到它......

4

1 回答 1

3

对于 3.2 版,您可以:

  • 扩展BeanPropertyBindingResult和覆盖createBeanWrapper()方法。
  • 扩展ExtendedServletRequestDataBinder和覆盖getInternalBindingResult()方法以返回您的bindingResult实例。
  • 扩展ServletRequestDataBinderFactory并返回您的databinder实例。
  • 扩展RequestMappingHandlerAdapter和覆盖createDataBinder()方法。
  • 在调度程序 servlet 上下文中注册您的处理程序适配器,使用order < Ordered.LOWEST_PRECEDENCE.

所以我认为你需要扩展四个框架类来将自定义拉BeanWrapper入 Spring MVC。

也许有更简单的选择。

于 2013-04-17T10:05:34.993 回答