我正在尝试对第一个操作的成功运行另一个操作,但我得到的是错误,说请求的资源不可用。从struts.xml文件中检查以下代码。
<action name="login" class="org.shobhan.action.LoginAction" >
<result name="success" type="dispatcher">/showProfile</result>
<result name="error" type="redirect">/Login.jsp</result>
</action>
<action name="showProfile" class="org.shobhan.action.ShowProfileAction" >
<result name="success">/profile.jsp</result>
</action>
我有两个java文件LoginAction和ShowProfileAction存在于同一个文件夹中。
答案 0 :(得分:4)
要重定向到某个操作,请使用actionRedirect
result type。
<result type="redirectAction">showProfile</result>
答案 1 :(得分:1)
<result name="success" type="dispatcher">/WEB-INF/showProfile.jsp</result>
<result name="error" type="dispatcher">/WEB-INF/Login.jsp</result>
上面没有调用另一个动作,但如果你在WEB-INF中有这些JSP,那么它将起作用。
Dispatcher解析为jsp(在这种情况下),重定向从头开始调用。是/ login.jsp可以从网址调用吗?换句话说是CONTEXT_ROOT / Login.jsp可以访问吗?如果是这样,那么你可以转发它,如果没有,那么就不可能。
一般情况下,错误后重定向不是一个好主意,因为它会删除字段错误(以及任何其他可能有用的变量和消息)。
如果您想调用某个操作,请参阅:Action redirect in struts.xml以获取有关调用操作和一些建议的更多选项。
PS :调度程序是默认类型,成功是默认名称,因此您只需编写...
<result>/WEB-INF/showProfile.jsp</result>
<result name="error">/WEB-INF/Login.jsp</result>
答案 2 :(得分:0)
你的成功通话不应该有文件扩展名吗?