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-bean name="adminGroupModifyForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="name" type="java.lang.String" />
</form-bean>
有一个jsp文件包括以下代码:
<html:form action="/adminGroupModify">
<html:text property="name">
</html:form>
现在要做的是动态的向name设置值,那么我们就在Action中动态生成adminGroupModifyForm,这样就可以直接实现以前用以下代码才能实现的效果了↓(下面这个是以前的实现方法)
<form action="xxx">
<input type="text value= <c:out value="${requestScrop.name}" /> ">
</form>
(具体应用)实现动态装配struts-config.xml中的动态表单的方法如下:
有以下动态表单:
<form-bean name="adminGroupModifyForm" type="org.apache.struts.validator.DynaValidatorForm">
<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中输入以下代码:
DynaActionFormClass dynaClass = DynaActionFormClass.createDynaActionFormClass(this.getServlet().findFormBean("adminGroupModifyForm"));
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文件中声明的表单名相同
本文介绍如何在Struts框架中动态生成表单,通过Action类实现表单属性的设置,并将实例化的表单对象存入请求域,以便在JSP页面上显示预填充的数据。
1062

被折叠的 条评论
为什么被折叠?



