我正在查看一些可能是Struts1的代码,并且想知道是否有人可以解释为什么我没有获得无限循环,相反,我将被转发到jsp页面而不是:
的struts-config.xml:
<struts-config>
<global-forwards>
<forward name="a.t" path="/Search.do"/>
</global-forwards>
<action-mappings>
<action path="/Search"
type="path.SearchAction"
scope="request"
name="searchForm"
validate="true">
<forward name="orders" path="a.t"/>
<forward name="success" path="a.t"/>
<forward name="cancel" path="/Search.do"/>
</action>
</action-mappings>
...
</struts-config>
我搜索了a.t并发现它也在此引用 tiles.xml。不知道这是什么目的。
<tiles-definitions>
<definition name="a.t" extends="admin.default">
<put-attribute name="content" value="/mypath/hello.jsp"/>
</definition>
</tiles-definitions>
Abridged SearchAction.java类:
public class SearchAction extends Action
(
....
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws
Exception
{
....
return mapping.findForward("success");
}
)
我最初的想法是,因为它总是返回&#34;成功&#34;,并且根据struts-config.xml
<forward name="success" path="a.t"/>
它会找到a.t,这是在global-foward中定义的
<struts-config>
<global-forwards>
<forward name="a.t" path="/Search.do"/>
</global-forwards>
和 路径=&#34; /Search.do"
理论上会将我发回给SearchAction.java
自
<action-mappings>
<action path="/Search"
指向SearchAction.java
我不知道原作者为什么决定这样做:
<forward name="orders" path="a.t"/>
<forward name="success" path="a.t"/>
<forward name="cancel" path="/Search.do"/>
之间有区别吗?
<forward name="success" path="a.t"/>
vs.
<forward name="success" path="/Search.do"/>
答案 0 :(得分:0)
我正被转发到jsp页面:
我希望你被转发到hello.jsp
我最初的想法是,因为它总是会回归“成功”,而且 根据struts-config.xml
<forward name="success" path="a.t"/>
它会找到a.t,这是在global-foward中定义的
<struts-config> <global-forwards> <forward name="a.t" path="/Search.do"/> </global-forwards>
和path =“/ Search.do”
path="a.t"
将不会再次在<global-forwards>
中搜索具有相同名称的映射。相反,它会在tiles.xml
中搜索合适的映射并找到以下块并重定向到hello.jsp
<tiles-definitions>
<definition name="a.t" extends="admin.default">
<put-attribute name="content" value="/mypath/hello.jsp"/>
</definition>
</tiles-definitions>
之间有区别吗?
<forward name="success" path="a.t"/> vs. <forward name="success" path="/Search.do"/>
<forward name="success" path="a.t"/>
将映射到tiles.xml
并转发到hello.jsp
<forward name="success" path="/Search.do"/>
将映射到SearchAction.java
。由于您只返回success
,它将再次转到hello.jsp
,但原作者已经这样做了,因为将来他也可以添加任何其他映射,对于不同的情况说,{{1} }
动作类:
failure
的struts-config.xml:
return mapping.findForward("failure");