您的位置:首页 > 其它

动态ActionForm--------DynaActionForm

2011-02-13 20:52 274 查看
1,DynaActionForm

动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以获得标准ActionForm的所有功能,动态actionForm的配置,动态actonForm的配置中type使用的是struts提供的一个动态ActionForm类----DynaActionForm类,DynaActionForm类继承了ActionForm。

<form-beans>
<form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String"></form-property>
<form-property name="age" type="java.lang.Integer"></form-property>
</form-bean>
</form-beans>

在该配置文件中form-bean的属性值是struts中的一个DynaActionForm类,该类继承了ActionForm类

form-property配置的是表单的字段,其中name要与表单中的name相同,type指的是表单中name的数据类型,在form-property中还可以像标准ActionForm那样实现reset设置初始值,或者实现validate实现验证,但是在动态表单中采用的是动态验证,也就是使用的是验证框架,需要加载一个验证插件,在验证插件中配置验证。

设置了动态ActionForm后就可以不用在写继承ActionForm的类了。直接在Action中使用动态ActionForm即可。

DynaActionForm采用的是map集合以键值对的形式存放表单数据

Action中的代码:

/**
* 测试动态ActionForm
* @author Administrator
*
*/
public class DynaActionFormTestAction extends Action {

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
DynaActionForm daf = (DynaActionForm)form;
String username = (String)daf.get("username");
Integer age = (Integer)daf.get("age");
System.out.println("username=" + username);
System.out.println("age=" + age);
return mapping.findForward("success");
}

}

jsp页面上可以使用el表达式取出:

<body>
用户名称:${dynaForm.map.username }<br>
年龄:${dynaForm.map.age }<br>
</body>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: