在JSF中的页面导航问题

来源:互联网 发布:amtemu mac 教程 编辑:程序博客网 时间:2024/05/19 19:57

      这是我在Csdn上的第一篇blog,由于本人是理科出身,语言组织能力不是很强,对所要阐述的观点,表达可能不是很好,还请各位看过俺blog的朋友多多理解。虽然如此,但我的目的是想把平时做项目遇到的一些小问题,以及解决方法告诉大家,希望各位同仁不要重蹈覆辙。如有问题,请通过邮件的方式与我联系,一同交流,共勉之!

    下面就进入主题吧!来说一下我今天解决的一个问题。使用过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,这就是为什么会执行上一个提交的动作的原因。解决方案是在做页面导航时加“重定向”选项,请大家切记!
 

原创粉丝点击