private UsersDAO ud;
public UsersDAO getUd() {
return ud;
}
public void setUd(UsersDAO ud) {
this.ud = ud;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
Integer uid=Integer.parseInt( request.getParameter("uid").toString());
Users u=ud.findById(uid);
DynaActionFormClass dynaClass = DynaActionFormClass.createDynaActionFormClass(mapping.getModuleConfig().findFormBeanConfig("updateUserForm"));
DynaValidatorForm dvf=new DynaValidatorForm();
try {
dvf = (DynaValidatorForm)dynaClass.newInstance();
} catch (IllegalAccessException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (InstantiationException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
dvf.set("username", u.getUsername());
dvf.set("userpass", u.getUserpass());
request.setAttribute("updateUserForm", dvf);
return mapping.findForward("up");
}
有一个动态的form配置如下:
< form-property name ="name" type ="java.lang.String" />
</ form-bean >
有一个jsp文件包括以下代码:
< html:text property ="name" >
</ html:form >
现在要做的是动态的向name设置值,那么我们就在Action中动态生成adminGroupModifyForm,这样就可以直接实现以前用以下代码才能实现的效果了↓(下面这个是以前的实现方法)
< input type ="text value= <c:out value=" ${requestScrop.name}" /> ">
</ form >
(具体应用)实现动态装配struts-config.xml中的动态表单的方法如下:
有以下动态表单:
< form-property name ="memo" type ="java.lang.String" />
< form-property name ="upage" type ="java.lang.Integer" />
< form-property name ="flag" type ="java.lang.String" />
< form-property name ="lowage" type ="java.lang.Integer" />
< form-property name ="name" type ="java.lang.String" />
< form-property name ="id" type ="java.lang.Integer" />
</ form-bean >
在Action中输入以下代码:
DynaValidatorForm adminGroupModifyForm = (DynaValidatorForm) dynaClass.newInstance();
adminGroupModifyForm.set( " id " ,nowgrouping.getId());
adminGroupModifyForm.set( " name " ,nowgrouping.getName());
adminGroupModifyForm.set( " upage " ,Integer.valueOf(nowgrouping.getUpage()));
adminGroupModifyForm.set( " lowage " ,nowgrouping.getLowage());
adminGroupModifyForm.set( " flag " ,nowgrouping.getFlag());
adminGroupModifyForm.set( " memo " ,nowgrouping.getMemo());
request.setAttribute( " adminGroupModifyForm " ,adminGroupModifyForm);
要注意两点
1、必须在Action类中执行
2、写入系统的request.setAttribute的属性名字,必须与xml文件中声明的表单名相同