2011-04-20 74 views
1

我正在寫一個struts2應用程序並訪問用戶必須登錄的系統。我的工作正常,系統工作正常,但在操作返回「成功」後,它轉發到「welcome.jsp」頁面,但URL以「login.action」結尾。爲了刷新頁面,我需要url以「welcome.jsp」結尾。如何在不使用JavaScript手動更改網址的情況下實現此目的?非常感謝你。Struts2 url問題

這是我的struts.xml文件中的操作標籤......

<action name="login" method="authenticate" class="LoginAction">  
     <result name="success">welcome.jsp</result> 
    <result name="error">login.jsp</result> 
</action> 
+0

我假設你正在向sesssion添加內容以顯示用戶已登錄?如果有,「LoginAction」類檢查是否設置了此會話屬性,並且用戶是否登錄返回「成功」。爲了做到這一點,「LoginAction」實現了SessionAware,從那裏開始非常簡單。 (儘管你應該弄清楚如何用攔截器重構你的解決方案,但是一次一步)。這不會按照您的要求更改網址,但會導致刷新問題消失,從而出現問題。 – Quaternion 2011-04-20 20:37:35

回答

2

在適當設計的基於動作的應用程序的每個URL應該指向調度的servlet /過濾器(即.action在結束你的情況),而不是直接到JSP。這就是Struts之類的基於動作的框架的行爲模式。

要做你想做的事,登錄成功後你不應該轉發到welcome.jsp。您應該重定向到welcome.action操作,然後該操作將轉發到welcome.jsp。詳情請參閱http://struts.apache.org/2.0.14/docs/redirect-action-result.html。有關Post/Redirect/Get模式的解釋,請參閱http://en.wikipedia.org/wiki/Post/Redirect/Get

+1

+1該要求顯示了對Struts2(和MVC)基礎知識的誤解。 – leonbloy 2011-04-20 19:46:59

+0

抱歉,延遲響應。我認爲對於我試圖達成的目標存在誤解。在我製作的系統(遊戲)中,有一個歡迎頁面,其中有一些從數據庫中查詢的字段,例如剩餘輪次數和金錢等。我需要用戶能夠刷新頁面以更新靜態字段。我確實理解MVC的概念,並意識到我試圖做的不是遵循標準程序。這就是說,我想指出,解決我的問題是使靜態字段動態。謝謝 – MattTYXM 2011-04-28 03:30:48