三、页面跳转及bean的生命周期选择
1. 页面跳转。页面跳转是jsf的一大特色,跳转前/后页面及事件操作都会在faces-config.xml进行配置。
- 页面跳转xml配置(增删改查及重复操作)
<navigation-rule>
<from-view-id>/login.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/doubt/cust_list.jsp</to-view-id>
<redirect></redirect>
</navigation-case>
<navigation-case>
<from-action>failure</from-action>
<to-view-id>/login.jsp</to-view-id>
</navigation-case></navigation-rule>
</navigation-rule>
- 对页面跳转输出事件的封装[3]
public class NavigationResults {
/**
* 对CRUD操作页面流转的封装
*/
static final String QUERY = "query"; // 前往查询页面
static final String ADD = "add"; // 前往新增页面
static final String EDIT = "edit"; // 前往修改页面
static final String SUCCESS = "success"; // 操作成功转向页面(一般去往列表显示页面)
static final String FAILURE = "failure"; // 操作失败转向页面(一般回到原页面)
static final String RETRY = "retry"; // 重试页面(即回到原页面)
}
使用范例
public String loginAction() {
// ...
return NavigationResults.SUCCESS;
}
2. bean的生命周期选择与功能划分
在纯jsp时代,javabean的生命周期有page, request, session和application种。在jsf的managed bean生命周期中去掉了page。想必大家对request/session/application
的差别比较了解,此处不再赘述。对于不同功能的bean,要选择应该恰当的scope。
- 创建一个ApplicationBean。由于界面上要求提供下拉列表框,在该bean中保存这些输入选项。
public class ApplicationBean {
private static List cttpSelectItems; // 客户类型
static {
// 客户证件类型设置
citpSelectItems = new ArrayList();
citpSelectItems.add(new SelectItem("11", "居民身份证或临时身份证"));
// ...
}
}
jsp页面中对输入选项的引用
<h:selectOneMenu value="#{doubtCustBean.ctvc}">
<f:selectItems value="#{appBean.ctvcSelectItems}" />
</h:selectOneMenu>
- 创建一个SessionBean。保存会话信息(比如客户登陆后的用户id等)
...