📄 导航规则设置.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>新建网页 1</title>
</head>
<body>
<p>导航规则设置</p>
<div id="PageContent">
<table cellSpacing="0" cellPadding="0" width="100%" border="0" id="table3">
<tr>
<td class="pagebody" vAlign="top">
<table style="CLEAR: both" cellSpacing="0" cellPadding="0" width="100%" border="0" id="table4">
<tr>
<td class="pagecontent" vAlign="top" width="100%">
<div class="wiki-content">
在JSF中是根据faces-config.xml中<navigation-rule>设定,以决定在符合的条件成立时,该连结至哪一个页面,一个基本的设定如下:<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
<div class="codeContent">
<pre class="code-java">....
<navigation-rule>
<from-view-id>/pages/index.jsp</from-view-id>
<navigation-<span class="code-keyword">case</span>>
<from-outcome>success</from-outcome>
<to-view-id>/pages/welcome.jsp</to-view-id>
</navigation-<span class="code-keyword">case</span>>
<navigation-<span class="code-keyword">case</span>>
<from-outcome>failure</from-outcome>
<to-view-id>/pages/index.jsp</to-view-id>
</navigation-<span class="code-keyword">case</span>>
</navigation-rule>
....</pre>
</div>
</div>
<p> 对于JSF,每一个视图(View)都有一个独特的识别(identifier),称之为View ID,在JSF中的View
ID是从Web应用程序的环境相对路径开始计算,设定时都是以/作为开头,如果您请求时的路径是/pages/index.faces,则JSF会将扩展名改为/pages/index.jsp,以此作为view-id。</p>
<p>
在<navigation-rule>中的<from-view-id>是个选择性的定义,它规定了来源页面的条件,<navigation-case>中定义各种导览条件,<from-outcome>定义当窗体结果符合的条件时,各自改导向哪一个目的页面,目的页面是在<to-view-id>中定义。</p>
<p>
您还可以在<navigation-case>中加入<from-action>,进一步规范窗体结果必须根据哪一个动作方法(action
method),当中是使用 JSF Expression Language 来设定,例如:</p>
<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
<div class="codeContent">
<pre class="code-java">....
<navigation-rule>
<from-view-id>/pages/index.jsp</from-view-id>
<navigation-<span class="code-keyword">case</span>>
<from-action>#{user.verify}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/pages/welcome.jsp</to-view-id>
</navigation-<span class="code-keyword">case</span>>
....
</navigation-rule>
....</pre>
</div>
</div>
<p>
在导航时,预设都是使用forward的方式,您可以在<navigation-case>中加入一个<redirect/>,让JSF发出让浏览器重新导向(redirect)的header,让浏览器主动要求新网页,例如:</p>
<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
<div class="codeContent">
<pre class="code-java">....
<navigation-rule>
<from-view-id>/pages/index.jsp</from-view-id>
<navigation-<span class="code-keyword">case</span>>
<from-outcome>success</from-outcome>
<to-view-id>/pages/welcome.jsp</to-view-id>
<redirect/>
</navigation-<span class="code-keyword">case</span>>
....
</navigation-rule>
....</pre>
</div>
</div>
<p>
您的来源网页可能是某个特定模块,例如在/admin/下的页面,您可以在<from-view-id>中使用wildcards,也就是使用
* 字符,例如:</p>
<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
<div class="codeContent">
<pre class="code-java">....
<navigation-rule>
<from-view-id>/admin/*</from-view-id>
<navigation-<span class="code-keyword">case</span>>
<from-action>#{user.verify}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/pages/welcome.jsp</to-view-id>
</navigation-<span class="code-keyword">case</span>>
....
</navigation-rule>
....</pre>
</div>
</div>
<p>
在上面的设定中,只要来源网页是从/admin来的,都可以开始测试接下来的<navigation-case>。</p>
<p> <from-view-id>如果没有设定,表示来源网页不作限制,您也可以使用 *
显式的在定义档中表明,例如:</p>
<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
<div class="codeContent">
<pre class="code-java">....
<navigation-rule>
<from-view-id>/*</from-view-id>
<navigation-<span class="code-keyword">case</span>>
....
</navigation-rule>
....</pre>
</div>
</div>
<p>或者是这样:</p>
<div class="code" style="BORDER-TOP-STYLE: solid; BORDER-RIGHT-STYLE: solid; BORDER-LEFT-STYLE: solid; BORDER-BOTTOM-STYLE: solid">
<div class="codeContent">
<pre class="code-java">....
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-<span class="code-keyword">case</span>>
....
</navigation-rule>
....</pre>
</div>
</div>
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -