首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JSF2中Navigation的配备

2012-09-08 
JSF2中Navigation的配置在JSF2中,页面的当航全部是在faces-config.xml中配置的,例如:/navigation-rulef

JSF2中Navigation的配置

在JSF2中,页面的当航全部是在faces-config.xml中配置的,例如:

</navigation-rule>       <from-view-id>/index.jsp</from-view-id>       <navigation-case>            <from-outcome>success</from-outcome>  <to-view-id>/page1.jsp</to-view-id>       </navigation-case></navigation-rule>

?<from-view-id>代表请求的页面,<to-view-id>代表返回的页面,而<from-outcome>既可以代表页面配置的action的值,也可以是ManagedBean中action方法返回的字符串。如果页面上<h:commandButton> 的action是一个EL表达式,则<from-outcome>代表的是action方法返回的字符串。我们还可以添加<from-action>节点来代表<from-outcome>来自与action方法。例如:

<navigation-rule>      <from-view-id>/index.jsp</from-view-id>      <navigation-case>            <from-action>#{userBean.login}</from-action>            <from-outcome>success</from-outcome>            <to-view-id>/page2.jsp</to-view-id>      </navigation-case>      <navigation-case>            <from-outcome>success</from-outcome>            <to-view-id>/page1.jsp</to-view-id>      </navigation-case></navigation-rule>

?如果页面上面action="success",则会返回page1.jsp,如果action="#{userBean.login}",则会返回page2.jsp

forward 和redirect

JSF2默认的跳转方式为forward,这样返回的页面会依然为index.jsp,且共享request中的请求值。假如需要改成Redirect请求,有俩种方法。如国页面的action的值是简单的字符串,可以添加faces-redirect=true来实现: action="success?faces-redirect=true"。如果页面是action="#{userBean.login}" EL表达式,则可以添加到faces-config.xml中:

?

<navigation-case>        <from-outcome>success</from-outcome><to-view-id>/page1.jsp</to-view-id><redirect/></navigation-case> 
?带条件的跳转

?? 我们还可以在<navigation-case>中添加<if>节点来判断条件。例如如果用户的年龄大于18,则转到page3.jsp,如果用户的年龄小与18,则转到page4.jsp:

<navigation-rule>     <navigation-case>         <from-action>#{userBean.login}</from-action>         <from-outcome>success</from-outcome>         <if>#{userBean.age &gt; 18}</if>         <to-view-id>/page3.jsp</to-view-id>         <redirect/>      </navigation-case>      <navigation-case>          <from-action>#{userBean.login}</from-action>          <from-outcome>success</from-outcome>          <if>#{userBean.age &lt; 18}</if>          <to-view-id>/page4.jsp</to-view-id>       </navigation-case></navigation-rule>
?

?xml中不能识别大于号(>)和小于号(<),所以先要转义。

热点排行