在
第一個JSF程式 中,我們簡單的定義了頁面的流程由 index.jsp 到 welcome.jsp,接下來我們擴充程式,讓它可以根據使用者輸入的名稱與密碼是否正確,決定要顯示歡迎訊息或是將使用者送回原頁面進行重新登入。
首先我們修改一下UserBean:
package onlyfun.caterpillar;
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.equals("justin") ||
!password.equals("123456")) {
errMessage = "名稱或密碼錯誤";
return "failure";
}
else {
return "success";
}
}
}
在UserBean中,我們增加了密碼與錯誤訊息屬性,在verify()方法中,我們檢查使用者名稱與密碼,它傳回一個字串,"failure"表示登入錯誤,並會設定錯誤訊息,而"success"表示登入正確,這個傳回的字串將決定頁面的流程。
接下來我們修改一下 faces-config.xml 中的頁面流程定義:
<?xml version="1.0"?>
<!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>
onlyfun.caterpillar.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=Big5"%>
<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>
密碼: <h:inputSecret value="#{user.password}"/><p>
<h:commandButton value="送出"
action="#{user.verify}"/>
</h:form>
</f:view>
</body>
</html>
當要根據verify運行結果來決定頁面流程時,action屬性中使用
JSF Expression Language "#{user.verify}",如此JSF就知道必須根據verify傳回的結果來導航頁面。
<h:outputText>可以取出指定的Bean之屬性值,當使用者因驗證錯誤而被送回原頁面時,這個錯誤訊息就可以顯示在頁面上。
分享到:
相关推荐
8. **Navigation**: JSF提供了导航规则,允许根据用户的动作或验证结果决定跳转到哪个页面。 9. **FacesServlet**: 这是JSF应用的核心Servlet,负责处理所有的JSF请求,并调用相应的生命周期阶段。 使用`jsf-api....
8. **Navigation**:JSF支持基于规则的导航,可以根据用户操作和业务逻辑决定页面跳转。 **license.txt** 文件通常包含软件的许可协议,对于`jsf-api.jar`来说,这可能指定了使用、修改和分发JSF API库的法律条款。...
在这个进阶教程中,我们将深入探讨JSF的导航规则设置,这是理解和控制用户交互流程的关键部分。 首先,`<navigation-rule>`元素在`faces-config.xml`配置文件中定义了页面之间的导航逻辑。`<from-view-id>`指定规则...
#### 三、JSF导航机制 ##### 3.1 Conversion Results Page Managed Bean * **功能**: 处理业务逻辑,计算并返回转换结果。 * **方法**: 实现数据验证、转换逻辑等。 ##### 3.2 Implementing the Results JSF Page *...
页面导航(02-Page-Navigation.pdf)** 在JSF中,页面导航是一种控制用户在应用程序中从一个页面移动到另一个页面的方式。JSF应用通常使用`faces-config.xml`文件定义导航规则,其中包含基于用户操作或特定条件的...
8. **Navigation**:JSF的导航系统可以根据动作结果决定跳转到哪个页面,提供了灵活的控制流程。 9. **FacesServlet**:JSF的核心Servlet,负责处理JSF的请求和响应。 在压缩包“jsf-1.2_04-b16-p02”中,包含的是...
`faces:outcome`是导航的目标,它可以是一个简单的页面路径,也可以是表达式语言(EL)表达式,如`#{bean.nextPage}`。这样,导航目标可以基于bean的属性动态确定。 7. **导航图**: 对于复杂的导航结构,可以使用`...
6. **Navigation Handling**:JSF的导航系统允许根据用户操作或验证结果动态决定页面跳转。 7. **AJAX Support**:JSF2增强了AJAX支持,通过`<f:ajax>`标签和`PrimeFaces`等库,可以实现局部刷新和异步交互。 8. *...
综上所述,这个简单的JSF登录示例展示了如何配置`web.xml`和`faces-config.xml`,创建登录页面以及实现后端逻辑。通过学习这个案例,初学者可以理解JSF的基本工作原理,并逐步掌握更复杂的应用开发。
- **faces-config.xml**:JSF的配置文件,用于定义页面导航规则、管理Bean的生命周期以及设置其他定制配置。例如,`<managed-bean>`标签用于声明和配置Bean,`<navigation-rule>`用于定义页面间的跳转逻辑。 JSF还...
6. **Navigation Handling**:JSF支持基于规则的页面导航,可以根据不同的用户操作和业务逻辑跳转到不同的页面。 7. **Facelets**:JSF 2.0及以后版本引入的默认视图技术,它是一种XML-based的模板语言,使得视图...
部分内容截取: 1. 入门 1.1 简介JSF 1.2 第一个JSF程序 1.3简单的导航 Navigation 1.4导航规则设置 1.5 JSF Expression Language 1.6国际化信息 ......
**1.3 简单的导航(Navigation)** 导航是JSF中的一个重要概念,用于控制用户界面的不同部分之间的跳转。简单导航可以通过定义导航规则来实现,这些规则可以在JSF配置文件(faces-config.xml)中或者直接在页面中定义...
`02-Page-Navigation.pdf`可能会详细解释JSF的页面导航机制,包括如何定义导航规则,以及在用户操作后动态跳转到不同页面的方法。 **3. 事件处理** JSF允许开发者定义事件处理程序来响应用户交互。`06-Event-...
- **导航规则**:通过在`faces-config.xml`中定义`<navigation-rule>`元素来指定不同的导航路径。 **1.4 导航规则设置** - **配置文件**:在`faces-config.xml`中设置导航规则。 - **导航案例**:例如,当用户点击...
页面导航(02-Page-Navigation.pdf) JSF中的页面导航是通过配置文件`faces-config.xml`进行管理的,它定义了用户操作与页面跳转之间的映射关系。你可以设置基于动作或基于结果的导航规则,实现动态的页面跳转,...
2. **02-Page-Navigation.ppt** - 这部分可能涉及到JSF页面导航的管理,包括如何定义导航规则,以及在不同页面间跳转的方法。 3. **03-Managed-Beans.ppt** - JSF中的Managed Beans是Java对象,它们作为应用程序的...