1

你会认为这是一个大问题。但可能有一个简单的问题,我找不到原因。

在名为 'index.jsp' 的 jsp 页面中有一个表单(简单登录),其操作名称为 'loginAction'。在动作类中,该execute()方法检查用户名、密码是否有效。如果它是一个有效的登录,execute() 方法返回 SUCCESS,它会转发到另一个名为 'account.jsp' 的 jsp 页面,该页面位于 WEB-INF 中名为 'jsp' 的文件夹中。

问题是,struts.xml 将所有有效登录转发到相关 url,但无法检索页面(account.jsp)。浏览器给出 404 错误。但是浏览器说“不可用”的 url 只是复制并粘贴手动到浏览器的地址栏。然后页面显示!!!
这是 struts.xml 文件

<struts>

<include file="/struts_auth.xml" />
<package name="default" extends="struts-default" >

    <action name="login" >
        <result>index.jsp</result>
    </action>        
    <action name="loginAction" class="com.app.action.LoginAction">
        <result name="success">/auth/acc</result>    
        <result name="input">index.jsp</result>
    </action>

</package>

这是struts_auth.xml上面 struts.xml 中包含的文件

<struts>

<package name="author" extends="default" namespace="/auth" >

    <action name="acc">
        <result name="success">/WEB-INF/jsp/account.jsp</result>  
        <result name="input">index.jsp</result>
    </action>   

</package>

这就是浏览器所说的原因
description: The requested resource (/app/auth/acc) is not available. 但是如果这个 url (http://localhost:8084/app/auth/acc) 只是复制到浏览器的地址栏中,它只会显示真实的页面。请让我知道我的问题在哪里。

4

2 回答 2

3

为了更好地理解,请参阅以下链接。如何重定向到另一个动作

  <!-- Redirect to another namespace -->
    <result name="success" type="redirectAction">
        <param name="actionName">acc</param>
        <param name="namespace">/auth</param>
    </result>
于 2012-06-23T07:51:06.863 回答
1

问题出在这里:<result name="success">/auth/acc</result>. 如果节点中没有给出类型名称,那么struts2本身会将dispatcher设置为默认类型。您可以像这样修改您的代码: <result name="success" type="redirectAction"> <param name="actionName">actionName</param> <param name="namespace">namespace</param> `

于 2012-06-23T13:32:10.180 回答