`

关于struts之ActionForm使用方法

    博客分类:
  • Java
阅读更多

1、刚才刚做了实验:才明白这样一条呆板的原则:不管你是通过.do请求一个jsp

文件,还是直接请求.jsp文件,struts都是根据jsp文件中的表单的action值在配

置文件里对应的mapping元素中的Form来初始化标签的值,只要它发现不是它定义

的属性,一律报错。
2、可以用一个全包含的Form来解决进出表单不一致的情况,也可以建立2个Form

和2个映射元素来分开它们。这种情况下,2个Form之间不发生任何关系,但参数

值可以到达。
3、链接式请求就不必理会表单间的关系。要链接的Form和当前表单不会出现错误

,属性有则匹配,没有则不匹配。
4、用脚本提交表单时竟然表单的值不能自动赋到目标ActionForm里,真奇怪!不

过总算在request里。
5、现在有了重要收获:用脚本提交表单和用标签是一样的,关健是提交值不一样

造成的区别。提交之后经过的所有Form表单都被赋值,当然这些表单之间是无关

的。
    切记,Action输出一个jsp页面时,并不是当前(在配置文件里和Action对应

)的Form对象初始化页面表单值,而是由这个jsp页面的action值在配置文件里注

册的Form对象初始化。
6、在请求一个jsp文件时:现在已经清楚了,只要是页面表单里的数据,里面的

表单属性必须在action值在配置文件里的Form存在对应属性才行,不管是直接请

求jsp文件,还是通过.do形式。通过.do形式时,Action只是初始化由name指定的

Form对象,但真正进行赋值的Form对象是由jsp页面表单的action值在配置文件里

的Form对象进行的,有趣!
7、页面表单的赋值由页面表单action在配置文件里匹配的Form进行。
8、页面提交所经过的Form全部被赋值,它们之间没有任何联系。有则匹配,无则

不匹配,无语法错误。
    
    关于一个Action的出入jsp页面表单不一致的情况下,如果严格采用一个jsp

页面表单一个Form的原则,会出现语法错误,为了调和这种情况,有以下四种解

决方案:
-------------------------
9、不改变action值提交时,显然对应的还是给它赋值的Form。此时Form必须兼顾

出口jsp页面表单的所有属性,不然会出现语法错误。一般情况下,一个子模块内

的页面共用大多属性,可以定义一个包含全部属性的Form。

10、改变action值提交时,可以是任意Form,不会出现语法错误。当然Form也必

须兼顾出口jsp页面表单的所有属性。

11、通过超链接时,源、目标Form没有任何关系。当然当前表单的任何属性值也

不会传过去。

12、通过2个Form中间一个.do连接的情况,和10属同一情况。复杂的情况下用这

种,在2个Action里处理。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics