JSF---->导航规则设置

一、导航规则简介

在JSF中是根据faces-config.xml中<navigation-rule>设定,以决定在符合的条件成立时,该连结至哪一个页面。一个基本的设定如下:

 <navigation-rule>

  <from-view-id>/pages/index.jsp</from-view-id>

  <navigation-case>
   <from-action>#{user.verify}</from-action>
   <from-outcome>success</from-outcome>
   <to-view-id>/pages/welcome.jsp</to-view-id>
  </navigation-case>

  <navigation-case>
   <from-outcome>failure</from-outcome>
   <to-view-id>/pages/index.jsp</to-view-id>
  </navigation-case>

 </navigation-rule>

对于JSF,每一个视图(View)都有一个独特的识别(identifier),之为View ID,在JSF中的View ID是从Web应用程序的环境相对路径开始计算,设定时都是以/作为开头,如果您请求时的路径是/pages/index.faces,则JSF会将扩展名改为/pages/index.jsp,以此作为view-id。

<from-view-id>是个选择性的定义,它规定了来源页面的条件,

<navigation-case>中定义各种导览条件,

<fromoutcome>定义当窗体结果符合的条件时,各自改导向哪一个目的页面,

<to-view-id>中定义目的页面

<from-action>,进一步规范窗体结果必须根据哪一个动作方法(action method),当中是使用 JSF Expression Language 来设定,

  <navigation-case>
   <from-action>#{user.verify}</from-action>
   <from-outcome>success</from-outcome>
   <to-view-id>/pages/welcome.jsp</to-view-id>
  </navigation-case>

 二、<redirect/>

在导航时,预设都是使用forward的方式,您可以在<navigation-case>中加入一个<redirect/>,让JSF发出让浏览器重新导向(redirect)的header,让浏览器主动要求新网页,例如:

....
    <navigation-rule>
        <from-view-id>/pages/index.jsp</from-view-id>
        <navigation-case>
            <from-outcome>success</from-outcome>
            <to-view-id>/pages/welcome.jsp</to-view-id>
            <redirect/>
        </navigation-case>
        ....
    </navigation-rule>
....

forward 和redirect的区别

使用forward的时候浏览器不知道它所请求的具体资源来源,所以地址栏不会变;使用redirect,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。forward,转发页面和转发到的页面可以共享request里面的数据.redirect,不能共享数据. 

 三、通配符 

您的来源网页可能是某个特定模块,例如在/admin/下的页面,您可以在<from-view-id>中使用通配符wildcards,也就是使用 * 字符,

  <from-view-id>/admin/*</from-view-id>

  <from-view-id>*</from-view-id>

  <from-view-id>/*</from-view-id>


 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值