2012-06-23 30 views
1

你會認爲這是一個很大的問題。但可能有一個簡單的問題,我找不到原因。Struts2:struts.xml不會轉發到動作名稱

在jsp頁面中有一個表單(簡單的登錄名),其名稱是'loginAction',名爲'index.jsp'。在動作類中,​​方法檢查用戶名和密碼是否有效。如果它是一個有效的登錄名,則execute()方法返回SUCCESS,該名稱將轉發到WEB-INF中名爲'jsp'的文件夾中名爲'account.jsp'的另一個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.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> 

struts_auth.xml文件,這是什麼瀏覽器說:作爲原因
description: The requested resource (/app/auth/acc) is not available.但如果此網址(HTTP:// localhost:8084/app/auth/acc)複製到瀏覽器的地址欄中,它只顯示真實頁面。請讓我知道我的問題在哪裏。

+0

我不認爲'/ WEB-INF'部分是您的成功結果所必需的。您是否嘗試過沒有該部分? – anu

+0

謝謝anu先生的關注。我把這個jsp出於安全目的。任何方式,我試圖將該帳戶頁面放在其他網頁通常存在的Web文件夾內。 /account.jsp index.jsp '但它也沒有工作。 –

回答

3

爲了更好的理解,請參考以下鏈接。 How to redirect to another action

<!-- Redirect to another namespace --> 
    <result name="success" type="redirectAction"> 
     <param name="actionName">acc</param> 
     <param name="namespace">/auth</param> 
    </result> 
+0

非常感謝Mohana Rao SV。它工作完美。不幸的是,我的問題中的問題沒有解決。我已經完成的方式(如我在我的問題中展示的代碼)工作了早期的項目。這次它給了我錯誤:(這就是爲什麼我興奮。任何方式,我可以用你的解決方案前進。再次感謝:) –

1

問題就在這裏:<result name="success">/auth/acc</result>. 如果在節點沒有給出類型名稱,然後Struts2的本身將設置調度爲默認type.You可以修改你的代碼是這樣的: <result name="success" type="redirectAction"> <param name="actionName">actionName</param> <param name="namespace">namespace</param> `

相關問題