JSF学习-导航

来源:互联网 发布:故宫pc软件 编辑:程序博客网 时间:2024/05/17 01:45

JSF学习-导航

一、关于jsf导航
1、静态导航
在简单的Web页面中,页面导航是静态的。单击指定按钮总是选择固定的页面来呈现响应。
例:
给命令按钮一个action属性,例如:
<h:commandButton label="testLogin" action="testLogin" />
动作必须匹配导航规则中的outcome: &lt;navigation-rule&gt;
&lt;from-view-id&gt;/test.jsp&lt;/from-view-id&gt;
&lt;navigation-case&gt;
&lt;from-outcome&gt;testLogin&lt;/from-outcome&gt;
&lt;to-view-id&gt;/testResult.jsp&lt;/to-view-id&gt;
&lt;/navigation-case&gt;
&lt;/navigation-rule&gt;
此规则说明:在/test.jsp内,testLogin动作将导航到/testResult.jsp中。
1)视图id字符必须以“/”开始,扩展名应该匹配文件扩展名(.jsp);
2)如果有全局性质的操作,可以不要“form-view-id”;
3)如果导航规则没有匹配特定动作,则只会再次显示当前页面。
2、动态导航
要实现动态导航,提交按钮必须有一个方法引用(method reference),例如
&lt;h:commandButton label="test_dynamic" action="#{backBean.testLogin}"/&gt;
action属性中的方法引用没有参数,其返回值类型是String。
例:
public String testLogin(){
if(true){
return "sucess";
}else{
return "failure";
}
}
此方法返回一个结果字符串。导航处理器使用返回的字符串来查找匹配的导航规则。
〔action方法如果返回null,表示重新显示同一页面。〕
单击命令按钮,如action属性是方法引用时,所执行的步骤如下:
a、提取指定的bean。
b、调用引用的方法。
c、结果字符串将被传递到导航处理器。
一般在需要执行分支行为时,需要在bean类中提供相应的方法引用(原则:最好的方法是找到一个类,它包含决策所需的全部数据);
3、高级导航问题
1)重定向
如果在to-view-id之后添加redirect元素,jsp容器会终止当前请求,并发送http重定向到客户端。重定向响应告诉客户端下一个页面使用哪个URL。
重定向页面比转发页面慢,因为需要到浏览器进行另外一次往返。但是重定向允许浏览器更新地址,一般作为书签的页面可以使用redirect元素。
本文转自
http://zhangyaozhou.bokee.com/viewdiary.13131413.html
标签词:
导航 重定向 页面 字符串 单击 命令按钮 action 静态 规则 处理器 

原创粉丝点击