以前没用struts的时候我们这样自己封装bean(超级简化版的bean数据封装)

simon曦 2007-07-11

没有用struts的时候这样做也很方便,呵呵,屡试不爽,超级简化版的bean数据封装

主要是自己写了一个这样的方法:

public static void setVOFromForm(HttpServletRequest request, Object model, String n)
    {
        try
        {
            Class class1 = model.getClass();//得到相应model的vo类
            Method method1[] = class1.getMethods();//得到该vo类的全部方法
            for(int i = 0; i < method1.length; i++)
            {
                String name = method1[i].getName();//得到当前方法的名字
                if(name.startsWith("set"))//是否为set开始的方法,即是否是set方法
                {
                    Class cc[] = method1[i].getParameterTypes();//得到该方法的参数类型数组
                    if(cc.length == 1)//是否参数唯一
                    {
                        String type = cc[0].getName();//得到参数类型
                        String param = request.getParameter(name.substring(3) + n);//当n=“”时,从request钟得到名字为该方法名第4位开始的字符串的变量值,
                        if(param != null && !param.equals(""))//不为空或者null
                            if(type.equals("java.lang.String"))//判断参数类型
                                method1[i].invoke(model, new Object[]{param});//将得到的变量值注入vo类model的方法method1[i]
                            else if(type.equals("int") || type.equals("java.lang.Integer"))
                                method1[i].invoke(model, new Object[]{new Integer(param)});
                            else if(type.equals("long") || type.equals("java.lang.Long"))
                                method1[i].invoke(model, new Object[]{new Long(param)});
                            else if(type.equals("boolean") || type.equals("java.lang.Boolean"))
                                method1[i].invoke(model, new Object[]{Boolean.valueOf(param)});
                            else if(type.equals("java.sql.Date"))
                            {
                                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                                java.util.Date d = df.parse(param);
                                if(d != null)
                                    method1[i].invoke(model, new Object[]{new Date(d.getTime())});
                            }
                    }
                }
            }

        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

用的时候这样用就可以了:

RsemployeecheckVO ecvo = new  RsemployeecheckVO(); 
DaoUtil.setVOFromForm(request, ecvo, ""); //将数据封装入ecvo中

jsp页面也和struts一样,需要变量名与bean中的变量名一致并且首字母大写:

<table width="80%" border="1" align="center" bordercolor="#000000" id="tblContent">
  <tr>
    <td width="14%"><div align="center">单位</div></td>
    <td colspan="3"><input name="Unit"  value="<%=PageUtil.filterNull(tivo.getUnit())%>" type="text" size="15"></td>
    <td width="14%"><div align="center">姓名</div></td>
    <td ><input name="Name" type="text"  value="<%=PageUtil.filterNull(tivo.getName())%>" size="10"></td>
  </tr>
  <tr>
    <td><div align="center">工伤结案</div></td>
    <td colspan="5"><textarea name="Injury_end" cols="40"><%=PageUtil.filterNull(tivo.getInjury_end())%></textarea></td>
  </tr>
  <tr>
    <td><div align="left">事故原因分析情况</div></td>
    <td colspan="5"><textarea name="AccidentAnalysis" cols="40"><%=PageUtil.filterNull(tivo.getAccidentAnalysis())%></textarea></td>
  </tr>
  <tr>
    <td>事故责任者受教育情况</td>
    <td colspan="5"><textarea name="AccidentEducation" cols="40"><%=PageUtil.filterNull(tivo.getAccidentEducation())%></textarea></td>
  </tr>
  <tr>
    <td>单位对事故处理情况(附:现场图,调查分析会议记录,报告书,处理决定)</td>
    <td colspan="5"><textarea name="AccidentDealing" cols="40" rows="5"><%=PageUtil.filterNull(tivo.getAccidentDealing())%></textarea></td>
  </tr>
  <tr>
    <td>防范措施落实情况</td>
    <td colspan="5"><textarea name="Carryingout" cols="40" rows="2"><%=PageUtil.filterNull(tivo.getCarryingout())%></textarea></td>
  </tr>
</table>

相关推荐

小世界小梦想小欢乐 / 0评论 2018-05-15