zoukankan      html  css  js  c++  java
  • JSF导航规则

    导航规则设置

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

      在<navigation-rule>中的<from-view-id>是个选择性的定义,它规定了来源页面的条件,<navigation-case>中定义各种导览条件,<from-outcome>定义当窗体结果符合的条件时,各自改导向哪一个目的页面,目的页面是在<to-view-id>中定义。

      您还可以在<navigation-case>中加入<from-action>,进一步规范窗体结果必须根据哪一个动作方法(action method),当中是使用 JSF Expression Language 来设定,例如:

    ....
        <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-rule>
     ....

      在导航时,预设都是使用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>
     ....

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

    ....
        <navigation-rule>
            <from-view-id>/admin/*</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-rule>
     ....

    在上面的设定中,只要来源网页是从/admin来的,都可以开始测试接下来的<navigation-case>。

      <from-view-id>如果没有设定,表示来源网页不作限制,您也可以使用 * 显式的在定义档中表明,例如:

    ....
        <navigation-rule>
            <from-view-id>/*</from-view-id>
            <navigation-case>
            ....
        </navigation-rule>
     ....

    或者是这样:

    ....
        <navigation-rule>
            <from-view-id>*</from-view-id>
            <navigation-case>
            ....
        </navigation-rule>
     ....
  • 相关阅读:
    使用循环计算斐波那契数列
    java 面向过程实现万年历
    学习js回调函数
    序列化和反序列化
    SQL语句增加字段、修改字段、修改类型、修改默认值
    使用SQL语句查询日期(当月天数,当月第一天,当月最后一天,本年最后一天,当月第一个星期) 日期转字符串
    RGB颜色表
    String 与StringBuilder有什么区别
    C# byte数组与Image的相互转换
    CentOS 7 MySQL、Tomcat、Zookeeper设置开机自启
  • 原文地址:https://www.cnblogs.com/wenjl520/p/1631501.html
Copyright © 2011-2022 走看看