2009年1月4日星期日

JSF_004:JSF Navigation Rule

JSF 导航规则的配置信息包含在 faces-config.xml 文件中:<faces-config>
<navigation-rule>
<from-view-id>/pages/index.jsp</from-view-id>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/pages/welcome.jsp</to-view-id>
</navigation-case>
</navigation-rule>

</faces-config>

说明(1)<from-view-id>:来自页面。
(2)<navigation-case>:定义各种导航条件。
(3)<from- outcome>:当来自页面的form的action值等于该条件时,导向哪一个目的页面。该action值来自于Command类型的 组件的action属性,该属性值可以为Managed Beans的一个属性或一个方法(返回值)。
(4)<to-view-id>:目的页面。
(5)你还可以在<navigation-case>中加入<from-action>,进一步规定 form的action值必须来自哪一个动作方法(action method),使用 EL来设定。像这样,
<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>
(6)如果来自网页是某个特定模块,可以使用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>
(7)使用 forward 或 redirect 方式导航到下一页面(默认是forward 方式)。像这样,
<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 的区别请参考《HTTP forward 与 redirect 的区别

没有评论: