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