读书人

JSF入门4(简单的导航)

发布时间: 2012-08-29 08:40:14 作者: rapoo

JSF入门四(简单的导航)

http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630

?

在 第一个JSF程序 中,我们简单的定义了页面的流程由 index.jsp 到 welcome.jsp,接下来我们扩充程序,让它可以根据使用者输入的名称与密码是否正确,决定要显示欢迎信息或是将使用者送回原页面进行重新登入。

?

一、修改一下UserBean:

package bruce.zhao.model;public class UserBean {private String name;private String password;private String errMessage;public void setName(String name) {this.name = name;}public String getName() {return name;}public void setPassword(String password) {this.password = password;}public String getPassword() {return password;}public void setErrMessage(String errMessage) {this.errMessage = errMessage;}public String getErrMessage() {return errMessage;}public String verify() {if (!name.equalsIgnoreCase("Bruce") || !password.equals("123456")) {errMessage = "名称或密码错误";return "failure";} else {return "success";}}}

在UserBean中,我们增加了密码与错误信息属性,在verify()方法中,我们检查使用者名称与密码,它传回一个字符串,"failure"表示登入错误,并会设定错误信息,而"success"表示登入正确,这个传回的字符串将决定页面的流程。

?

二、faces-config.xml 中的页面流程定义:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE faces-config PUBLIC"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN""http://java.sun.com/dtd/web-facesconfig_1_0.dtd"><faces-config><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><managed-bean><managed-bean-name>user</managed-bean-name><managed-bean-class>bruce.zhao.model.UserBean</managed-bean-class><managed-bean-scope>session</managed-bean-scope></managed-bean></faces-config>

根据上面的定义,当传回的字符串是"success"时,将前往 welcome.jsp,如果是"failure"的话,将送回 index.jsp。
接下来告诉网页设计人员Bean名称与相关属性,以及决定页面流程的verify名称,我们修改 index.jsp 如下:

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@page contentType="text/html;charset=GB2312"%><html><head><title>第一个JSF程序</title></head><body><f:view><h:form><h3>请输入您的名称</h3><h:outputText value="#{user.errMessage}" /><p>名称: <h:inputText value="#{user.name}" /></p><p>密码: <h:inputSecret value="#{user.password}" /></p><p><h:commandButton value="送出" action="#{user.verify}" /></p></h:form></f:view></body></html>

?action属性中使用 JSF Expression Language "#{user.verify}",用户点击“送出”button的时候,相当于调用了UserBean的verify方法。outputText里面user.errMessage相当于调用了UserBean的getErrMessage方法,如果这个get方法没有值,就不显示。user.verify如果验证错误,会setErrMessage,这时候再返回index页面,页面上就会有错误信息。

读书人网 >JavaScript

热点推荐