JSF学习-导航
一、关于jsf导航
1、静态导航
在简单的Web页面中,页面导航是静态的。单击指定按钮总是选择固定的页面来呈现响应。
例:
给命令按钮一个action属性,例如:
<h:commandButton label="testLogin" action="testLogin" />
动作必须匹配导航规则中的outcome: <navigation-rule>
<from-view-id>/test.jsp</from-view-id>
<navigation-case>
<from-outcome>testLogin</from-outcome>
<to-view-id>/testResult.jsp</to-view-id>
</navigation-case>
</navigation-rule>
此规则说明:在/test.jsp内,testLogin动作将导航到/testResult.jsp中。
1)视图id字符必须以“/”开始,扩展名应该匹配文件扩展名(.jsp);
2)如果有全局性质的操作,可以不要“form-view-id”;
3)如果导航规则没有匹配特定动作,则只会再次显示当前页面。
2、动态导航
要实现动态导航,提交按钮必须有一个方法引用(method reference),例如
<h:commandButton label="test_dynamic" action="#{backBean.testLogin}"/>
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 静态 规则 处理器