Struts1_学习笔记6_struts0500_actionform_动态ActionForm_转换器
1、动态ActionForm
动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以获得标准ActionForm的所有功能
* 在struts-config.xml文件中定义动态ActionForm,如:
<!-- 动态ActionForm 不用自己写ActionForm类了,这里配置。动态ActionForm可以用动态验证框架手写的ActionForm可以用validate方法--><form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm"><form-property name="username" type="java.lang.String"/><form-property name="age" type="java.lang.Integer"/></form-bean>
DynaActionForm daf = (DynaActionForm)form;String username = (String)daf.get("username");Integer age = (Integer)daf.get("age");/** * 注册java.util.date转换器 * @author Administrator * */public class UtilDateConverterInitWithServlet extends HttpServlet {@Overridepublic void init() throws ServletException {//将UtilDateConverter注册到ConvertUtils里面ConvertUtils.register(new UtilDateConverter(), Date.class);}}public class UtilDateConverter implements Converter {public Object convert(Class type, Object value) {System.out.println("UtilDateConverter.value=" + value);if (value == null) {return value;}if (value instanceof Date) {return value;}Date d = null;if (value instanceof String) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {d = sdf.parse((String) value);} catch (ParseException e) {e.printStackTrace();}}return d;}}<!-- load-on-startup:大于0就可以了 3也可以. 表示tomcat一启动就执行这个Servlet <servlet> <servlet-name>UtilDateConverterInitWithServlet</servlet-name> <servlet-class>com.aowin.struts.UtilDateConverterInitWithServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> -->
public class UtilDateConverterInitWithPlugin implements PlugIn {public void destroy() {}public void init(ActionServlet servlet, ModuleConfig config)throws ServletException {System.out.println("UtilDateConverterInitWithPlugin.init()");ConvertUtils.register(new UtilDateConverter(), Date.class);}}<!-- 第二种注册转换器方式 plug方式 --><plug-in className="com.aowin.struts.UtilDateConverterInitWithPlugin"/>