修改操作的表单里有名称为
  entity.id(只读),entity.name
的两个字段当我用struts2对其进行更新的时候,name字段可以被修改,过程是正常的。说明:我采用了getEntity,setEntity方法直接把entity对象的值初始化到修改表单里,这是struts2的方便之处,但是,用了这种方法后发现,当把修改表单提交到action后,再次得到entity,这时的entity里除了entity.id,entity.name的其他字段都变成null了,这当然不是我所要得结果,我只希望改那些修改表单中出现的字段,而其他未出现的字段不变,而不是变成null有谁遇到过这个问题,用其他的办法也能解决,但struts2能把表单自动转化成记录的方法实在是方便,各位帮忙回答一下

解决方案 »

  1.   

    这个问题不是Struts2 的问题吧应该是在后台例如 Hibernate控制  为null 的字段 不做修改因为你在做修改的时候 如果不带原始数据到页面 只能是 修改了什么提交什么还有一种做法 就是 你跳转的时候 把 这个页面修改前 数据 带过去 放到那里 让用户修改这样就不会出现 null 的字段
      

  2.   

    To : 3 楼
    本来struts2 spring hibernate整合起来,就是帮助程序员,将纪录作为一个对象进行操作你再去把纪录拆开,就更麻烦了吧
      

  3.   

    如果有的字段确实是要修改成null按照你的理解该如何解决
      

  4.   

    我现在找到一个解决办法假如有 id,name,sex,birthday,job 这些字段构成了一条记录如果我在做修改纪录的表单中只修改name,sex,并在表单中放置这两个字段以及id对应的文本框,human.id,human.name,human.sex。那么从表单提交到服务器后,struts2将很方便的得到human对象,但是我发现这样做虽然很方便,但是出现的问题是,这个经过修改后的human对象的其他字段如birthday,job都变成null了那么,对这个问题,我采用的解决办法是
    用这个human对象的humanService根据human.getId()来得到原来的human实例,然后修改表单提交来的human对象的name,sex对原来的name,sex进行更新然后保存原来的human实例。对于修改操作,我是这么做的,看看大家是怎么做的??????
      

  5.   

    修改部分字段常用三种方式:
    1.重新从数据库查询原来的记录,然后修改部分字段(多一次查询,效率最低,通用性最好,能保证其他字段数据一致)
    2.直接在sql语句中写上需要修改的字段(效率最高,通用性最差,能保证其他字段数据一致性)
    3.不修改的字段用hidden或readonly方式提交后台(上述两种方式的折中,但不能保证其他字段数据一致)不考虑效率绝对选第一种