JSF導航規則

來源:互聯網
上載者:User

導航規則設定

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.