在Struts2应用程序中转换类型的最佳方法是什么?

现在,我想为我的应用程序中的某个休眠实体创建CRUD.假设我想更改与用户关联的帐户.只要我具有所有适当的获取器/设置器,我就可以传递带有特定值的参数user.account.id.

第一次创建对象(帐户为空)时,这可以很好地工作.这使ognl创建了一个新的帐户对象,并将ID设置为传入的对象.

尝试更改封装的Account对象时,会发生此问题.使用相同的user.account.id参数,ognl将此解释为getUser().getAccount().setId(param). Hibernate将此解释为尝试更改主键.

我知道为什么会这样做,我只是想知道是否有更好的方法来处理这种情况.这在我们的应用程序中很常见,我不需要在通过休眠保存它们之前继续创建多个对象并将其编组.

没有人在struts2中有更好的方法来解决此问题吗?

解决方法:

持久性类型转换器

为实体创建类型转换器,然后仅传递user.account而不是user.account.id.这将调用getUser().setAccount(account),不会使您头痛.

更新记录时,只需将user.account传递为表单中的隐藏字段.

至于为您的实体提供的广泛解决方案,您可以选择以下几种:

多个转换器

创建一个处理大多数逻辑的抽象类型转换器,以使您拥有真正轻量级的每个实体的子类.在xwork-conversion.properties中注册每个转换器.

接口驱动转换器

我使用的方法是有一个名为IdBasedJpaEntity的接口,该接口实现了99.9%的实体.它定义了Integer类型的getId()方法.然后,我有一个JpaDAORegistry单例类,该类是在应用程序启动时创建的.我向它注册了我的每个实体,并且它构造了每个DAO的单个实例(基本上是事实上的单例).我有一个实体类到DAO实例的映射.这使我的类型转换器可以为任何给定的IdBasedJpaEntity查找合适的DAO实例,从而使我可以使用一个JpaEntityConverter类,该类可以与实现该接口的任何实体一起使用.这条路线还有很多工作要做,但是对我来说已被证明是高度可重用的.

标签:hibernate,type-conversion,struts2,crud,java

来源: https://codeday.me/bug/20191208/2094076.html

java xwork_java-与休眠的Struts2 xwork类型转换相关推荐

  1. (十二)struts2的类型转换

    所有的MVC框架,都属于表现层的解决方案,都需要负责收集用户请求参数,并将请求参数传给应用的控制器组件. 这时问题出现了,所有的请求参数都是字符串类型数据,因此MVC框架必须具备将这些字符串请求参数转 ...

  2. java.lang.ClassNotFoundException: org.apache.struts2.dispatcher.ng.filter.Struts问题解决

    在eclipse中新建了ssh项目报错:1.java.lang.ClassNotFoundException:org.apache.struts2.dispatcher.ng.filter.Strut ...

  3. java继承类型转换_#java 一个简单的例子理解java继承、成员函数重写、类型转换...

    一个简单的例子理解java继承.成员函数重写.类型转换 1.继承简介 举一个简单的例子:笔分为很多种,比如毛笔.钢笔.圆珠笔等等,这些笔都有一些相同的属性比如长度.笔迹的粗细等等:但他们也有不同的特点 ...

  4. java类型转换答案,在java中支持两种类型的类型转换,自动类型转换和强制类型转换。父类转化为子类需要强制转换。...

    在java中支持两种类型的类型转换,自动类型转换和强制类型转换.父类转化为子类需要强制转换. 更多相关问题 计算机病毒通过()传染扩散得极快,危害最大. 当一个现象的数量由小变大,另一个现象的数量相反 ...

  5. java整数能强转转字符,Java中数据类型默认转换和强制类型转换

    默认转换: a:由低到高一次为:(byte   short    char  )---int ---long ---float --- double b:注意:byte   short    char ...

  6. Struts2之类型转换

    http://blog.csdn.net/xiazdong/article/details/7229682 一.Struts2 类型转换介绍 类型转换:解析HTTP请求参数,将Http请求参数赋值给A ...

  7. Struts2的类型转换(下)

    Struts2提供的类型转换: Struts2提供的是一个名叫StrutsTypeConverter的抽象类,这个类实际上是DefaultTypeConverter的子类.当我们继承自该抽象类 时,要 ...

  8. java刘保_[SSH] Eclipse+Struts2的简单应用

    终于要开始研究框架了,没有大神的指导,只能自己上网摸索着来,没有唯一对的方案,只能找到最适合自己的就可以了. 首先整理一下,代码是参考别人的代码,按照别人的版本有问题,大概整理了一下,自己重新弄了一个 ...

  9. Struts2 Date类型转换问题

    来源:http://blog.csdn.net/cowboy324/article/details/6704716 在Struts2中,一般的内置类型都会在由系统自动进行转换.但是Date类型好像有时 ...

最新文章

  1. MJRefresh iphonx 显示问题
  2. asp正则替换链接实现伪静态效果
  3. 牛客 - 斐波那契和(杜教BM)
  4. 如何在Eclipse中显示行号
  5. android启动其他app的服务器,Android中通过外部程序启动App的三种方法
  6. python中文字体怎么设置_python matplotlib 中文字体设置
  7. vue从入门到开发--2-基本结构
  8. 浏览器了解(五)资源加载顺序
  9. 常见 HTTP/FTP/WebSocket 错误代码大全 - 转
  10. PTA-航空公司VIP客户查询
  11. 计算机一级三维饼图,计算机考试excel制作复合饼图的方法
  12. 聊聊千古名方逍遥丸【转载】
  13. python 重定向 网址错_Python URL重定向问题
  14. 什么是DDOS攻击?怎么抵抗DDOS攻击?
  15. MIME (多用途互联网邮件扩展类型)
  16. Idea 去掉 mapper.xml 文件的黄色、淡绿色警告
  17. idea debug教程启用Debug模式可以分析定位异常发生的位置
  18. springboot+thymeleaf模糊查询功能和分页实现以及input前端回显(前台到后台)
  19. 微信小程序---弹性盒子模型
  20. 从零开始写C++打怪小游戏(1)

热门文章

  1. 读WAF与IPS的区别总结之摘抄
  2. 针对.NET开发者(neo-charm) 1.0 的NEO区块链架构参考模型
  3. editplus的使用技巧
  4. Sklearn (一) 监督学习
  5. WCF中的Dispose
  6. Java注解(1)-注解基础
  7. openkm zip 导入乱码问题解决
  8. 用 JMeter 测量性能--测试您的 DB2 数据库
  9. docker image 实践之容器化 ganglia
  10. 后台运行 Windows CMD 命令与 BAT 程序