首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

流线化 Web 应用程序开发(6)

流线化 Web 应用程序开发(6)

技巧 2:简化导航在 JSF 1 中,导航使用 XML 指定。比如,要从 login.xhtml 转到 places.xhtml,可能使用清单 8 所示的导航规则:
清单 8. JSF 1 中的导航配置规则和用例
1
2
3
4
5
6
7
<navigation-rule>
  <navigation-case>
    <from-view-id>/pages/login.xhtml</from-view-id>
    <outcome>places</outcome>
    <to-view-id>/pages/places.xhtml</to-view-id>
  </navigation-case>
</navigation-rule>




要去除  中的 XML,可以利用 JSF 2 的导航约定:JSF 将 .xhtml 添加到按钮操作的末尾并加载该文件。这意味着不需要使用注释或其他内容,只需要使用约定就可以完整地避免编写导航规则的需求。在清单 9 在,按钮的操作是 places,因此 JSF 加载 places.xhtml:
清单 9. 通过约定进行导航
1
2
3
<h:commandButton id="loginButton"
  value="#{msgs.loginButtonText}"
  action="places"/>




对于  来说,不需要任何导航 XML。清单 9 中的按钮加载 places.xhtml,但是前提是该文件和按钮所在的文件处于同一个目录中。如果操作并没有以斜杠(/)开头,那么 JSF 认为这是一个相对路径。如果需要更加明确一点,可以指定一个绝对路径,如清单 10 所示:
清单 10. 使用绝对路径的导航
1
2
3
<h:commandButton id="loginButton"
  value="#{msgs.loginButtonText}"
  action="/pages/places"/>




当用户激活  中的按钮时,JSF 将加载 /pages/places.xhtml 文件。
默认情况下,JSF 将从一个 XHTML 页面转至另一个 XHTML 页面,但是通过指定 faces-redirect 参数可以重定向,如清单 11 所示:
清单 11. 通过重定向进行导航
1
2
3
<h:commandButton id="loginButton"
  value="#{msgs.loginButtonText}"
  action="places?faces-redirect=true"/>

返回列表