JSF学习之导航

导航是日常生活中最常见的操作之一,我们从哪里来要到哪里去,要找某个东西,找的整个过程我们就在进行着导航的操作。在JSF中,主要提供静态和动态两种类型的导航。
当我们提交一个表单时,服务器接收请求并处理,然后将响应发回到客户端,并选择合适的视图呈现给用户。在JSF中,导航处理器负责选择下一个JSF页面。在简单的web应用中,页面导航是静态的,单击指定按钮总是选择固定的页面来呈现响应。我们通过使用按钮的action属下来绑定导航。如:
,其中“login”匹配导航规则的outcome:

/index.jsp

login
/welcome.jsp

该导航动作说明: 如果是在/index.jsp内,login动作将导航到/welcome.jsp。如果没有from-view-id元素,那么该规则将应用到所有的页面。
大多数情况下,页面流程不仅仅依赖用户单击哪个按钮,而且还依赖于用户的输入,此时,我们就需要使用动态导航。要实现动态导航,提交按钮必须有一个方法引用,例如,action属性中的方法引用没有参数,其返回值类型是String,其不但可以作为用户动作的结果执行模型更新,还可以告诉导航处理器下一步去哪里。若返回值为null,表示应该重新显示同一页面。
无论何时单击命令按钮,其action属性是方法引用,所执行的步骤如下:
提取指定的bean→调用引用的方法→结果字符串将被传递到导航处理器。
如果在to-view-id之后添加redirect元素,JSP容器终止当前请求,发送http重定向到客户端。重定向响应告诉客户端下一个页面使用哪个URL。若我们在前面的导航规则相应位置添加,当用户从/index.jsp移动到/welcome.jsp时浏览器将显示新的url。
在from-view-id元素中,我们还可以使用通配符来指定适用的页面。
如果两个不同的动作具有相同的动作字符串,或者如果两个动作方法引用返回相同的动作字符串,就需要使用from-action元素。

#{quiz.answerAction}
again
/again.jsp

#{quiz.startOverAction}
again
/again.jsp

导航处理器不会调用#{...}分隔符中的方法,只是使用from-action字符串作为一个主键,用于查找匹配的导航情形。

This entry was posted in 读书笔记 and tagged . Bookmark the permalink.

One Response to JSF学习之导航

  1. xfjjason says:

    顶!

发表评论

您的电子邮箱不会被公开。 标记为 * 的区域必须填写

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>