• 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 IDJSF中的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>
    


     


     

  • 相关阅读:
    Delphi代码获取网卡物理地址三种方法 本文来自Delphi之窗,原文地址:http://www.52delphi.com...
    SQL SERVER 中实现公历到农历的转换
    cxgrid相同列合并显示
    rzCheckList.ItemChecked[Index]就可以判断指定节点地状态.
    为什么PING域名得到IP与实际公网IP不符
    如何让sql server2005和sql server2000共存安装在同一机器上
    如何编译通过 Raize 5.3 中的 RzBorder.pas
    u6升级到u890的过程
    技术部门到底该如何管理才能“和谐”
    在CXGRID中如何让字段能以0.00的格式显示
  • 原文地址:https://www.cnblogs.com/xqzt/p/5637340.html
Copyright © 2020-2023  润新知