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>