gpt4 book ai didi

java - 有没有办法将非 bean 样式对象用作 spring 表单的模型属性?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:45 32 4
gpt4 key购买 nike

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

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

最佳答案

对于版本 3.2,您可以:

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

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

也许有更简单的选择。

关于java - 有没有办法将非 bean 样式对象用作 spring 表单的模型属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043498/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com