文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Struts中Action里对Form的运用理解

Struts中Action里对Form的运用理解

时间:2010-08-19  来源:菜鸟都不容易

public ActionForward custDetail(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        String forward = "custDetail";
        CustInforForm custInforForm = (CustInforForm) form;
        try {
            CustomerInfor customerInfor = custInforForm.getCustomerInfor();
            if (!customerInfor.getCustomerId().equals("")) {
                custInforForm.setCustomerInfor(customerInfor
                        .get(customerInfor.getCustomerId()));
                custInforForm.setCheckboxSelect(customerInfor.getCustomerXxlx()
                        .split(","));//这句中customerInfor.getCustomerXxlx为空
            }
        } catch (ObjectPersistentException e) {
            logger.error(e.getMessage(), e);
            ActionErrors errors = new ActionErrors();
            errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionError("error",
                    "查询失败:" + e.getMessage()));
            saveErrors(request, errors);
        }
        return mapping.findForward(forward);
    }

 


原因:CustomerInfor customerInfor = custInforForm.getCustomerInfor()会生成一个对象,并将对象地址赋给CustomerInfor类中private接口类型变量(假设为A),同时将A作为函数返回值赋给customerInfor,此时A和customerInfor同时指向这个对象。
custInforForm.setCustomerInfor(customerInfor.get(customerInfor.getCustomerId()));生成另一个对象,这个对象里各属性都有值,并将对象地址作为参数赋给Form里面的私有变量A,此时customerInfor仍然指向原来的对象,所以此时customerInfor里面没有CustomerXxlx的值

根据这个原理上面代码customerInfor.getCustomerXxlx()应该改为custInforForm.getCustomerInfor().getCustomerXxlx();才能正常运行。或者把有属性值的对象重新赋给customerInfor.如下代码:

 

代码     public ActionForward custDetail(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        String forward = "custDetail";
        CustInforForm custInforForm = (CustInforForm) form;
        try {
            CustomerInfor customerInfor = custInforForm.getCustomerInfor();
            if (!customerInfor.getCustomerId().equals("")) {
                customerInfor = customerInfor.get(customerInfor.getCustomerId());
                custInforForm.setCustomerInfor(customerInfor);
                custInforForm.setCheckboxSelect(customerInfor.getCustomerXxlx().split(","));
            }
            // 在这里进行一条记录的查询操作!
        } catch (ObjectPersistentException e) {
            logger.error(e.getMessage(), e);
            ActionErrors errors = new ActionErrors();
            errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionError("error",
                    "查询失败:" + e.getMessage()));
            saveErrors(request, errors);
        }
        return mapping.findForward(forward);
    }

 


 

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载