如何使用DynaActionForm

博客介绍了DynaActionForm的使用和创建方法。使用时,需在struts - config.xml中配置,JSP使用taglib无变化,Action中使用要注意获取属性方式,直接使用会丧失validate和reset机会,可派生子类覆盖方法。创建时,不能直接new,否则set方法会抛空指针异常,应从request获取。

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

如何使用DynaActionForm?
1.在struts-config.xml中:
<form-bean name="uploadForm" type="org.apache.struts.action.DynaActionForm"> 
    <form-property name="upload" type="org.apache.struts.upload.FormFile"/> 
    <form-property name="url" type="java.lang.String"/>
    <form-property name="desc" type="java.lang.String"/>
</form-bean>

2.JSP在使用taglib没有变化;

3.在Action中使用DynaActionForm时需要注意:
DynaActionForm edFrm=(DynaActionForm)form;
String name= (String)edFrm.get("name");

4.直接使用DynaActionForm,会使使用者丧失使用validate和reset的机会,此时就需要从DynaActionForm
派生出一个子类,然后覆盖validate、reset方法。在派生类中检索属性,使用:this.get("...")

如何创建一个DynaActionForm对象?
答:这种情况出现在通过一个列表选择,然后加载被选择的对象并在细节窗体中显示。此时,不能直接创建DynaActionForm。否则,在使用DynaActionForm的set方法会抛出空指针异常。正确的方法例子:
DynaActionForm edFrm= (DynaActionForm)request.getAttribute( mapping.getAttribute());
......
edFrm.set( "id", new Integer(ur.getId()));
edFrm.set( "name", ur.getName());
edFrm.set( "pwd1", ur.getPassword());
edFrm.set( "pwd2", ur.getPassword());
......
request.setAttribute( mapping.getAttribute(), edFrm);

究其原因是通过new创建的DynaActionForm中并不包含任何属性,在set时找不到当然就是空指针异常啦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值