导航规则设置
在JSF中是根据faces-config.xml中<navigation-rule>设定,以决定在符合的条件成立时,该连结至哪一个页面,一个基本的设定如下:
....
<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>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/pages/index.jsp</to-view-id>
</navigation-case>
</navigation-rule>
....
对于JSF,每一个视图(View)都有一个独特的标识(identifier),称之为View ID,在JSF中的View ID是从Web应用程序的环境相对路径开始计算,设定时都是以/作为开头,如果您请求时的路径是/pages/index.faces,则JSF会将副文件名改为/pages/index.jsp,以此作为view-id。
在<navigation-rule>中的<from-view-id>是个选择性的定义,它规定了来源页面的条件,<navigation-case>中定义各种导览条件,<from-outcome>定义当表单结果符合的条件时,各自改导向哪一个目的页面,目的页面是在<to-view-id>中定义。
您还可以在<navigation-case>中加入<from-action>,进一步规范表单结果必须根据哪一个动作方法(action method),当中是使用 JSF Expression Language 来设定,例如:
....
<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>
....
在导航时,预定义都是使用forward的方式,您可以在<navigation-case>中加入一个<redirect/>,让JSF发出让浏览器重新导向(redirect)的header,让浏览器主动要求新网页,例如:
....
<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>
....
您的来源网页可能是某个特定模组,例如在/admin/下的页面,您可以在<from-view-id>中使用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>
....
在上面的设定中,只要来源网页是从/admin来的,都可以开始测试接下来的<navigation-case>。
<from-view-id>如果没有设定,表示来源网页不作限制,您也可以使用 * 显式的在定义文件中表明,例如:
....
<navigation-rule>
<from-view-id>/*</from-view-id>
<navigation-case>
....
</navigation-rule>
....
或者是这样:
....
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
....
</navigation-rule>
....
分享到:
相关推荐
3. **验证事件**:在`processValidators`阶段,如果验证失败,JSF会抛出`ValidatorException`,开发者可以通过监听这个事件来处理异常。 4. **更新模型事件**:当所有验证通过后,`processUpdates`事件会更新模型值...
本讲主要聚焦于EJB(Enterprise JavaBeans)技术在企业级信息系统开发中的应用。 EJB是Java EE(Java Platform, Enterprise Edition)框架中的一部分,它为开发分布式、事务处理、安全性和可伸缩性的企业级应用程序...
【标题】"韩顺平_细说jsp第1讲.开山篇" 是一个由知名IT讲师韩顺平主讲的JSP(Java Server Pages)技术入门教程,旨在帮助初学者理解和掌握JSP的基本概念和核心语法。在这个“开山篇”中,韩顺平老师将引导我们走进...
第三讲“博和利初级培训第三讲.ppt”可能涉及更高级的主题,比如EJB和JPA(Java Persistence API),用于处理企业级应用中的数据存储和事务管理。EJB是Java的组件模型,提供了服务器端的业务逻辑封装,而JPA则提供了...
### 第1讲 Java EE技术概述 #### 一、Java 平台分类及概述 Java 平台由 Sun 公司开发,并根据不同应用领域分为三个主要版本:Java SE(标准版)、Java EE(企业版)和 Java ME(微型版)。这三个版本各自针对不同...
**ejb3 第5讲 -- 通过ANT提高EJB应用的开发效率** EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建企业级应用程序。EJB 3.0是一个重要的里程碑,它极大地简化了EJB的开发,提高了开发效率。在本...
- **JSF(JavaServer Faces)**:将Struts2与JSF结合,利用JSF的组件模型和Struts2的灵活性。 - **Ajax**:利用Struts2的Ajax支持,实现页面局部更新,提高用户体验。 - **Hibernate**:整合ORM框架,简化数据库...
在"第一讲.txt"可能涉及JavaEE的基础概念介绍,而"BookStoreSys"可能是一个示例项目,展示了一个基于JavaEE的书店管理系统的设计和实现,包括用户注册登录、书籍浏览、购买等功能,涵盖了上述许多JavaEE技术的实战...
在提供的文件列表中,我们看到一个名为"第五课讲议.xls"的文件。这很可能是课程的第五课讲义,包含了关于Java EE的特定主题或概念的教学材料。在Excel格式中,它可能包含表格、图表、练习或者讲解,帮助学习者理解并...
第1讲 Oracle9i简介 目的: 1. 了解数据库的发展,关系数据库的基本原理。 2. 了解目前市场上流行的数据库产品及特点 3. 了解Oracle数据库的发展 4. 掌握Oracle9i产品系列 5. 掌握Oracle9i Database Server的新特点...
接下来选择学习Java EE或是Java ME(或者你还想不断深入学习JavaSE,只要你喜欢,你可以一直深入下去,就像前面所说的,我不会讲到Java ME的学习);估计选择Java EE方面的学习者会多一些,JavaEE所涉及技术非常多,...
以“%”开头,[第几个数值$][flags][宽度][.精确度][格式] printf()的引入是为了照顾c语言程序员的感情需要 格式化输出 Formatter;格式化输入 Scanner;正则表达式 输出格式控制: 转义符: \ddd 1到3位8...
就是JSF。 2:Java微缩版:JME( Java Micro edition) JE(Java, Micro edition)是对标准版JSE进行功能缩减后的版本,于199年6月 由 Sun Microsystems第一次推向Java团体。它是一项能更好满足Java开发人员不同需求 的广泛...