对于每一个客户请求,Struts framework在处理ActionForm的时候,一般需要经历如下几个步骤:
(1)检查Action的映射,确定Action中已经配置了对ActionForm的映射
(2)根据name属性,查找form bean的配置信息
(3)检查Action的formbean的使用范围,确定在此范围下,是否已经有此form bean的实例。
(4)假如当前范围下,已经存在了此form bean的实例,而是对当前请求来说,是同一种类型的话,那么就重用。
(5)否则,就重新构建一个form bean的实例
(6)form bean的reset()方法备调用
(7)调用对应的setter方法,对状态属性赋值
(8)如果validate的属性被设置为true,那么就调用form bean的validate()方法。
(9)如果validate()方法没有返回任何错误,控制器将ActionForm作为参数,传给Action实例的execute()方法并执行。
super.validate(actionMapping,httpServletRequest)
比较重要两个地方,一个是在struts-config.xml文件里将form-bean设置成DynaActionForm(用<form-property>把form里包含的variable枚举出来);另一个是在页面上写上<html:javascript formName="ValidationForm" cdata="false" />,cdata="false"表示使用struts生成的javascript进行验证,cdata="true"则使用server端的验证。