这两天学习到有关动态ActionForm的东西,感觉对于大型且对表项改动较频繁的WEB应用来说还是很有
益处的,于是自己动手将原先应用普通ActionForm的应用程序改成应用动态ActionForm,这里列举编写过程中遇到
的与普通ActionForm的不同:
1. 最大的不同就是动态ActionForm是配置出来的(在struts-config.xml中),而不是通过编写.java文件;
2. <form-bean>中的type属性设置为"org.apache.struts.action.DynaActionForm"或者其子类;
3. 在<form-bean>中添加<form-property>子元素设置动态ActionForm的字段(对应于视图组件中的表项),
其name属性制定字段名,type指定属性类型;
4. 在处理该form的action类中,execute方法中的“ActionForm form”参数的类型仍然保持为其默认的
ActionForm,而不是DynaActionForm,尽管DynaActionForm是从ActionForm继承而来,否则action不会执行任何
逻辑。在这一点上,我用了一天多的时间才发现,不过其深层次的缘由还未发现;访问动态ActionForm的时候只需
要对form进行类型转换即可,但其访问表项的方法要调用public Object get(String name) 和 public void set(String
name,Object value),这一点亦和普通ActionForm的访问方式不一样,DynaActionForm是把所有的属性保存在一
个Map类对象中;
对于本文中提到的未解决的问题,请高手大侠们仗义相助!