DynaValidatorForm 赋值

本文介绍如何在Struts框架中动态生成表单,通过Action类实现表单属性的设置,并将实例化的表单对象存入请求域,以便在JSP页面上显示预填充的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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文件中声明的表单名相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值