个人的小观点,第一次取出来,你是把值设到actionform中,这样你是通过action放显视到页面,你在保存后,可不可以做同样的操作呢!
没试过,讨论下!

解决方案 »

  1.   

    那你就应该在action中做处理了,先根据你的关键字取出数据库里边的对象,然后根据页面的属性来赋值,页面上没有出现过的就不要赋值了.使用BeanUtils.copyProperty()来做.
      

  2.   

    下边是我的用法,你可以参考一下.
       public Object updateObjectPart(Class boClass, ActionForm form,
                String serviceName, String idColumnName, HttpServletRequest request)
                throws Exception {
            // form的字段数组
            Field[] fields = form.getClass().getDeclaredFields();        // 页面控件数组
            Map map = request.getParameterMap();        // 持久化的form对象
            ActionForm objForm = this.findByPk(boClass, form.getClass(),
                    serviceName, request.getParameter(idColumnName));        for (int i = 0; i < fields.length; i++) {
                Field f = fields[i];
                String fieldName = f.getName().trim();            // 录入页面是否有该字段录入框,没有则保留原值
                if (!map.containsKey(fieldName)) {
                    // 过滤BeanUtils不支持的类包
                    if (!f.getType().isPrimitive()
                            && !f.getType().getName().startsWith("java.lang.")
                            && !f.getType().getName().startsWith("java.sql.")
                            && !f.getType().getName().startsWith("java.util.Date")) {
                        continue;
                    }                // 日期类型判断
                    if ((f.getType() == java.util.Date.class)
                            || (f.getType() == java.sql.Date.class)) {
                        // 查看是否页面有该日期输入框
                        if (map.containsKey(fieldName + "Str")) {
                            // 如果有,则以页面输入为准
                            continue;
                        }
                    } // end if(Date)                BeanUtils.copyProperty(form, fieldName, BeanUtils.getProperty(
                            objForm, fieldName));
                } // end if(map.containsKey)
            } // end for        return doTokenService(request, form, serviceName,
                    Const.IEMS_DB_OPERATION_TYPE_UPDATE, boClass);
        }
      

  3.   

    那我问你什么叫有值?
    对象的话你是能判断的是否等于null
    那要是int double 呢?
    难道判断为0就不更新?