Struts action mapping (controller的inputforward属性)
1.?? Full action
这可以说是
- <action path = "/fullAction" type = "com.acme.
- <action path = "/formOnlyAction" type = "org.apache.
- <action path = "/actionOnlyAction" type = "com.acme.
- <action path = "/actionOnlyAction" type = "com.acme.
- <action path = "/sourceAction" type = "com.acme.
- <action path = "/targetAction" type = "com.acme.
- <action path = "/inputAction" type = "com.acme.
???
- <action path = "/outputAction" type = "com.acme.struts.Action2" name = "outputForm" input = "/WEB-INF/jsp/error2.jsp"> <forward path="/WEB-INF/jsp/viewTarget.jsp"/> </action>
6.1. 结论和使用提示
这个调用顺序和以前并没有什么不同,但是由于现在我们有了不同的form bean 和相应的实例,我们可以使编码更清晰。
这种设计可以用来处理web应用的输入和输出。源action接受请求,源form bean 验证输入数据。如果输入合法,则控制被重定向到输出action。Struts会重新给form bean的字段赋值,但是这里有个技巧:可以为字段定义不同的名称,或者更好一些,对输出form bean的字段只读,Struts使用accessors 和mutators去操纵form bean的字段,所以如果没有mutators就不能修改了。
由于是利用持久数据手工填写了输出form,所以就不需要保存输入form的值了。因此,就不需要转发,而是使用了重定向。这样,源action和目标action就解耦了。
这种方式的一个非常好的副作用是输出页面可以重新加载而不用重新运行输入action,避免了重复提交输入数据。