Struts中大项目中forward的处理


forward一般有两个解决方案:
1. 在具体Jsp页面中指定forward值。
2. 在配置文件中定义。

不知哪个方案更好一点?有没有有实例提供参考?

1. 在具体Jsp页面中指定forward值。
2. 在配置文件中定义。

这两种情况都是可能发生的,并且也是避免不了的。

第一种情况,只有一种转发目标:
<action path="/esla.bug.view"
type="com.dmk.test.action.esla.EslaBugAction"
roles="minister,pm,member">
<forward name="success" path="/esla/bug_attrib.jsp"/>
</action>

第二种情况,有两种确定的转发目标:
<action path="/esla.bug.delete"
type="com.dmk.test.action.esla.EslaBugAction"
roles="minister,pm">
<forward name="success" path="/esla/bug_list.jsp"/>
<forward name="failed" path="/esla/bug_attrib.jsp"/>
</action>

第三种情况,有多种可能,每一种都不确定。
<action path="/esla.complex.new"
type="com.dmk.test.action.complex.ComplexAction"
roles="minister,pm">
<forward name="attrib1" path="/esla/complex_attrib1.jsp"/>
<forward name="attrib2" path="/esla/complex_attrib2.jsp"/>
<forward name="attrib3" path="/esla/complex_attrib3.jsp"/>
</action>
其中attrib1/attrib2/attrib3需要在Jsp页面中指定,即作为一个
URL参数传递到系统内部处理

上述第三种情况就需要在JSP页面中指定转发逻辑,当然,如果想使代码更纯粹些,那就只好拆分这个action mapping为三个action mapping,但对大型项
目来说,复杂的配置文件就成了项目的一个恶梦。

这两种情况都是可能发生的,并且也是避免不了的。

第一种情况,只有一种转发目标:
<action path="/esla.complex.search"
type="com.dmk.test.action.esla.ComplexAction"
roles="minister">
<forward name="success" path="/esla/complex_list.jsp"/>
</action>

第二种情况,有两种确定的转发目标:
<action path="/esla.bug.delete"
type="com.dmk.test.action.esla.EslaBugAction"
roles="minister,pm">
<forward name="success" path="/esla/bug_list.jsp"/>
<forward name="failed" path="/esla/bug_attrib.jsp"/>
<action>

第三种情况,有多种可能,每一种都不确定。
<action path="/esla.complex.new"
    type="com.dmk.test.action.complex.ComplexAction"
    roles="minister,pm">
   <forward name="attrib1" path="/esla/complex_attrib1.jsp"/>
 <forward name="attrib2" path="/esla/complex_attrib2.jsp"/>
<forward name="attrib3" path="/esla/complex_attrib3.jsp"/>
</action>
其中attrib1/attrib2/attrib3需要在Jsp页面中指定,即作为一个
URL参数传递到系统内部处理

上述第三种情况就需要在JSP页面中指定转发逻辑,当然,如果想使代码更纯粹些,那就只好拆分这个action mapping为三个action mapping,但对大型项
目来说,复杂的配置文件就成了项目的一个恶梦。