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