spring+hibernate3+struts2中修改数据,只修改部分数据的问题。

xingwei4225 2009-10-21 06:34:31
在用struts2的时候,例如一个表有10个字段,但是在页面上只显示5个字段,当修改一行数据的时候,我想达到的效果是:这5个字段的值进行修改,其他的5个字段保持不变。
如果spring将struts2的bean的生成方式改为prototype的时,假如其他5个字段都有值的话,修改得时候会全部设为null,但是如果spring将struts2的bean的生成方式改为session的时候,就可以达到效果,我想问的是如果我用spring将struts2的bean的生成方式改为prototype,有没有什么办法可以解决?
...全文
448 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
penweizgx002 2010-09-04
  • 打赏
  • 举报
回复
我也在找这个问题的答案啊。困扰中。目前我用的是这两个方法,一个是将修改前的数据保存在session中。用更新的数据去修改这个Session中的对象后再更新到数据库,或在修改前将数据对象根据ID再取出修改,然后保存。
有什么好的方法告诉一声,我也想知道
夜雨~听风 2009-10-22
  • 打赏
  • 举报
回复
除了2,3楼说的,更新前把没修改的取出来,在结合修改的封装到list里存;或用form标签做
jy03029760 2009-10-22
  • 打赏
  • 举报
回复
ddddd
gavin1234 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 archko 的回复:]
既然是用了HIBERNATE那是不是PO当作VO显示
在JSP里了?为什么会有这样的操作呢?从ID获得一个
PO然后设置其它五个值不就可以了?你设置Struts2的
这个属性有什么用,默认是单例的,肯定不行,PROTOTYPE会
每次请求生成一个.SESSION就是在会话范围有效了
request.getParameter(id);得到ID然后
五个属性的setter/getter
Entity po=service.getEntity(id);获得你要修改的PO
然后po.set()设置相关的五个属性,不就可以了?

[/Quote]

赞同
longtenggdf 2009-10-22
  • 打赏
  • 举报
回复
如3楼的 struts2有个关键的二次绑定。在修改之前现将要修改的查询出来,然后再对做过处理的字段进行处理。没修改的就不要去动它。hibernate会自动判断哪些字段改变了然后做update操作。
archko 2009-10-22
  • 打赏
  • 举报
回复
既然是用了HIBERNATE那是不是PO当作VO显示
在JSP里了?为什么会有这样的操作呢?从ID获得一个
PO然后设置其它五个值不就可以了?你设置Struts2的
这个属性有什么用,默认是单例的,肯定不行,PROTOTYPE会
每次请求生成一个.SESSION就是在会话范围有效了
request.getParameter(id);得到ID然后
五个属性的setter/getter
Entity po=service.getEntity(id);获得你要修改的PO
然后po.set()设置相关的五个属性,不就可以了?
BearKin 2009-10-22
  • 打赏
  • 举报
回复
修改之前再查询一次 把修改后的字段放到新查询的实体里然后保存
xingwei4225 2009-10-21
  • 打赏
  • 举报
回复
如果有很多字段的话很要命的,这样很麻烦的
xiaozejun 2009-10-21
  • 打赏
  • 举报
回复
将他以前的值获取 放到隐藏域 那么更新的时候更新10个字段 不过就是后面5个字段的值还是原来的值而已

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧