在JSF中的頁面導航問題
我的目的是想把平時做項目遇到的一些小問題,以及解決方法告訴大家,希望各位同仁不要重蹈覆轍。如有問題,請通過郵件的方式與我聯系,一同交流,共勉之!
下面就進入主題吧!來說一下我今天解決的一個問題。使用過JSF的人都知道,在JSF(指采用JSF框架的項目)中,頁面之間的跳轉是通過faces- config.xml文件來頁面導航的。當然,你也可以用其他方式做頁面跳轉,但JSF不建議這樣做。在做頁面導航的時候,有一個“重定向”的選項,即" redirect "。代碼如下:
- <navigation-rule>
- <from-view-id>/archives/admin/archivesAudit.jsp</from-view-id>
- <navigation-case>
- <from-outcome>auditFinish</from-outcome>
- <to-view-id>/archives/admin/archivesBrowse.jsp</to-view-id>
- <redirect />
- </navigation-case>
- </navigation-rule>
如果不選擇此項,從當前頁面跳轉到另一個頁面后,地址欄保留的是請求的 URL,server只是做了一個轉發的動作;如果選擇“重定向”,則地址欄里保留的是被請求的URL,server會重新發送一個被請求的URL。當然,不管是否做“重定向”的選擇,渲染出來的頁面都是正常的。但是,如果你是從添加, 修改, 刪除等頁面跳轉到列表頁的話。如不加“重定向”做導航,當成功提交后,再次刷新列表頁的時候,就會再次執行上一次提交的動作。這樣的結果就是,會不停的做上一次的添加, 修改或刪除動作,且都是相同的數據。因為列表頁保留的地址還是上次提交的URL,這就是為什么會執行上一個提交的動作的原因。解決方案是在做頁面導航時加 “重定向”選項,請大家切記!
【編輯推薦】