在struts中,对与表单数据的formBean, 可以不需要开发者编写formbean,只需要在配置文件中配置一个formbean,这时,在用户提交数据后,会将这些数据自动封装到配置文件中指定的formbean实体中。这个在配置文件中配置的动态formBean是org.apache.struts.action.DynaActionForm。
要使用这个动态formBean的话,首先需要在配置文件中的<form-bean>标签中指定其type属性为org.apache.struts.action.DynaActionForm,其次在<form-bean>的子便签form-property指定每个bean的属性名和类型,如下所示:
<form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="username" type="java.lang.String"></form-property>
<form-property name="emails" type="java.lang.String"></form-property>
<form-property name="birthday" type="java.lang.String"></form-property>
<form-property name="gender" type="java.lang.String"></form-property>
</form-bean>
这样配置完后,strut将会生成一个DynaActionForm的实体,用它来封装<form-property>所指定属性。这样在action中,便可以通过form来获取这些属性名。获取方式一般是通过其get(Object name);如下所示:
DynaActionForm daf = (DynaActionForm)form;
String username = (String) daf.get("username");
String emails = (String) daf.get("emails");
String birthday = (String) daf.get("birthday");
String gender = (String) daf.get("gender");
当然,也可以通过BeanUtils工具将这个动态formBean的属性注入到实体的属性中,如:
User user = new User();
BeanUtils.copyProperties(user, daf);
System.out.println("username:"+user.getUsername());
System.out.println("emails:"+user.getEmails());
System.out.println("birthday"+user.getBirthday().toLocaleString());
System.out.println("gender:"+ user.getGender().getValue());