JSF笔记 - 导航模型 静态导航和动态导航

JSF的导航规则一般定义在faces-config-nav.xml配置文件中,当用户单击按钮、超链接时,JSF可以根据这种导航规则转到其他的页面。

下面通过一个配置示例来说明常用的配置标签:

<!-- 使用navigation-rule配置导航规则 –>


<!-- 可选,指定导航规则的起始页面
如果没有指定,则意味着该导航规则可应用于应用中的所有页面 –>

<!-- 指定一系列条件(子标签),只有满足了这些条件时才会导航到目标页面 –>

<!-- 可选,指定来源于某个Bean的特定方法时才会导航到指定页面 –>

<!-- 可选,定义了一个逻辑结果
当处理方法返回该逻辑结果时才会导航到指定页面 –>

<!-- 指定一个物理视图资源,表明要导航到哪个页面 –>

<!-- 使用该标签表明是采用重定向方式导航到指定页,而不是采用常规的ViewHandler机制进行导航 –>


下面是一个简单的配置:


<!-- 表明/login目录下的任何页面都可以作为起始页面 –>
/login/*

<!-- 表明从User的login方法返回success时 –>
#{userBean.login }
success
<!-- 满足上面条件时导航到/main.jsp –>
/main.jsp


<!-- 表明从User的login方法返回failure时 –>
#{userBean.login }
failure
<!-- 满足上面条件时导航到/login.jsp –>
/login.jsp

静态导航:

面中的commandButton标签的action属性并不是绑定到某个托管Bean的指定方法,而是直接给出一个静态的字符串。

编写静态导航需要开发者完成如下两件事:

1、 将commandButton或者commandLink标签的action属性指定为一个静态字符串 2、 在JSF配置文件中配置导航规则

下面是一个使用静态导航的例子:

login.jsp页面代码如下:

<f:view>

用户登录


<h:outputText value=”#{login.error }” />

<h:form id=”loginForm”>
用户名:<h:inputText value=”#{login.username }”></h:inputText>
密码:<h:inputText value=”#{login.password }”></h:inputText>
<h:commandButton action=”success” value=”登录”></h:commandButton>
</h:form>
</f:view>

在导航规则配置文件中进行配置:

/login.jsp

success
/index.jsp

不管在login.jsp页面中输入什么信息,应用总是能够导航到index.jsp页面。

动态导航:

动态导航将commandButton或commandLink的action属性绑定到某个托管Bean的Action处理方法,使得超链接或者按钮被点击时,它所对应的托管Bean的Action处理方法将被调用,根据Action的返回值不同,应用可以动态地导航到不同的页面。

动态导航需要开发者完成两件事:

1、 将commandButton或commandLink标签的action属性绑定到某个托管Bean的处理方法 2、 在JSF配置文件中配置导航规则

arthinking wechat
欢迎关注itzhai公众号