Oracle 技术网 (OTN) > 面向开发人员和数据库管理员的下载、讨论和文档
使用 JDeveloper 的 JavaServer Faces 简介

使用 JDeveloper 的 JavaServer Faces 简介

本教程将向您介绍使用 JavaServer Faces (JSF) 构建客户端应用程序的基础知识。

大约 20 分钟

主题

本教程包括下列主题:

构建 JavaServer Faces 项目

构建 JavaServer Faces 页面

设计应用程序页面流和 Login 页面
构建 Hello 页面
运行应用程序
创建条件导航

将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注意:此外,您还可以在下列步骤中将光标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。

概述

您将创建三个 JSF 页面。第一个页面是 Welcome 页面,该页面将作为应用程序的起点。第二个页面是 Login 页面,有两个域;一个用于用户名,一个用于口令。该页面使用一个 Java Bean 来管理这两个值的持久性。第三个页面返回一条 Hello 消息,并显示存储在辅助 Bean 中的用户名。您还将创建一个从 Welcome 页面到 Login 页面,再到 Hello 页面的 JSF 导航链接。

返回主题列表

前提条件

开始本教程之前,您应该:

1.

可以访问或已安装了 Oracle JDeveloper 10g 第 3 版 (10.1.3) 生产版。您可以从 Oracle 技术网上下载该版本。

 

2.

启动 JDeveloper。双击 JDeveloper 可执行文件 (jdeveloper.exe),该文件可以在您解压缩它的根目录下找到。

如果 Migrate User Settings 对话框打开,请单击 NO

关闭 Tip of the Day 窗口。

 

返回主题列表

构建 JavaServer Faces 项目

该主题将引导您逐步创建一个使用 JavaServer Faces 的 Web 应用程序。

为 JSF 视图创建一个新应用程序和项目

1.

要创建新的应用程序,右键单击 Applications 节点,选择 New Application... 选项。

 

2.

将该应用程序命名为 JSFIntro。保留 Application Template 域的默认值 No Template,单击 OK 创建应用程序。


3.

在 Create Project 对话框中,输入 view 作为项目名,然后单击 OK。该项目是一个关联文件的逻辑组合,;在此种情形下,这些文件代表您基于 JSF 的视图。

 

4.

单击 Save All 图标保存您的工作。

 

返回主题列表

构建 JavaServer Faces 页面

该子主题将引导您完成创建 JSF 页面的基本步骤。

返回主题列表

创建 Welcome JSP 页面。

1.

右键单击 view 项目,从上下文菜单中选择 New...

 

2.

New Gallery 中,展开 Web Tier 节点,选择 Categories 面板中的 JSF,以及 Items 面板中的 JSF JSP。单击 OK


3.

显示 Create JSF JSP Wizard - Welcome 屏幕。单击 Next 继续。


4.

在该向导的 Step 1 中,选择 Servlet 2.4\JSP 2.0 (J2EE 1.4) 选项,然后单击 Next 继续。


5.

Step 2 中,将该页面命名为 welcome.jsp,选择 JSP Page 类型,然后单击 Next

请注意,Add Mobile Support 使您可以为移动应用程序创建 JSF 页面。


6.

Step 3 中,选择 Do Not Automatically Expose UI components in a Managed Bean 选项。单击 Next


7.

Step 4 中,您将看到为该 JSP 页面启用的标记库。因为这将是一个支持 JSF 的页面,因此预先选中了 JSF CoreJSF HTML 库。单击 Next

请注意,选择资料库只是将必要的 JSF taglib 指令插入到了页面中。JDeveloper 还附带有 JSF 组件的其他 ADF Faces 集。用户可以通过 Tools 菜单的 Manage Libraries 选项添加其他 JSF 组件。

 

8.

Step 5 中,接受所有默认值。单击 Finish


9.

您现在将在 Visual Editor 中看到该支持 JSF 的 JSP (welcome.jsp) 的框架。


10.

在 Application Navigator 中展开 view 项目节点,并查看其内容。您可以看到 welcome.jsp。在 WEB-INF 文件夹中,有一个名为 faces-config.xml 新文件。


返回主题

在 Welcome 页面中添加详细信息

1.

在 Welcome 页面中添加一个标题。

在页面的顶部输入一些文本:Welcome to the HR JSF Application

通过单击 Visual Editor 顶部左侧下拉列表并选择 Heading 2 来将文本格式化为 H2

 

2.

对页面应用 CSS 样式表。

要执行这一操作,确保在右侧可以看到组件选项板 (component palette)。(否则,使用 View->Component Palette)。在屏幕右上角的 Components 中,选择 CSS 库。

然后将 JDeveloper 样式表拖到新的 JSP 上。您将看到页面外观立即改变。


3.

接下来,将一个 JSF 命令按钮 (commandButton) 组件拖放到该页面上。

在组件选项板中,选择 JSF HTML 组件列表,然后将 Command Button 项拖放到页面的标题文本下。
注意,当您把鼠标放在组件选项板中的组件上方时会显示帮助文本。


4.

在右下方的 Property Inspector (View | Property Inspector) 中,将 CommandButton 的 Value 属性更改为 Proceed to Login


5.

Action 属性更改为 login。当在运行时单击时,这将使用户可以前进到另一页。

在 Visual Editor 中工作时,请注意 JSF 组件的样子就是它们运行时的样子。例如,作为一个按钮。


6.

单击 Visual Editor 底部的 Source 选项卡,转至页面的源代码视图。
在靠近源代码页面的顶部,有两个用于标准或基本 JSF 组件库的 taglib 指令。这些库是指定事项的一部分,与 JSF 引用实现一同提供。具体的库是 Core 库和 HTML 库。

 

7.

向下滚动页面的主体可以看到以下标记:

这是 JSP 标记,该标记提供了到 JSF commandButton 用户界面组件 (UIComponent) 的钩子。当该标记执行时,它将提供一个可点击的按钮,该按钮可以执行诸如调用 Java 方法或执行 Faces 导航之类的任务。

在本例中,它将执行到第二个页面的简单导航。这是通过在 Property Inspector 中设置 commandButton 的 Action 属性,然后在稍后定义与动作的值对应的导航规则来实现的。在本例中,您已经将 Action 属性的值设为 login。稍后您将定义一个导航规则来使用同一个值导航至第二个登录页面。


返回主题

返回主题列表

设计应用程序页面流和 Login 页面

该子主题将引导您使用 JSF 页面流编辑器直观地设计应用程序。JSF 页面流编辑器使您能够根据页面导航规则来设计整个应用程序的页面流。

返回主题列表

创建页面流和 Login 页面

1.

在 Application Navigator(Web Content | WEB-INF 文件夹)中找到 faces-config.xml 文件。双击该文件调用页面流编辑器。

Visual Editor 将显示一个空白屏幕。

 

2.

在继续之前,请注意编辑器在屏幕底部有 4 个选项卡:Diagram、Overview、SourceHistory。默认视图是 faces-config 编辑器的 Diagram 视图,该视图允许您直观地编辑 faces-config 的导航规则。

单击 Overview 选项卡将显示一个控制台类型的界面,它允许您将所有类型的配置注册到 faces-config 文件中,包括受管理 bean、导航规则和其他项(如自定义验证器、转换器等)。(:您可以直观地或使用 Overview 编辑器来定义导航规则。)Source 选项卡使您可以直接利用增强的 XML 编辑功能(包括标记填充)来编辑 XML。History 选项卡是所有编辑器窗口都有的,它显示最近编辑的历史记录。

 

3.

从 Navigator 中将最初的 welcome.jsp 页面拖放到图中。


4.

在图中直接创建 login.jsp

要执行这一操作,将一个 JSF Page 项目从 Component Palette 上拖放到页面流图中。将其更名为 /login.jsp
请注意,页面上有一个黄色的标记,这指示还没有实际创建它,只是存在于图中。


5.

通过单击(不是拖放)该选项板中的 JSF Navigation Case 项,然后单击 welcome.jsp 图标来创建导航规则。您将看到一条连接线开始出现。然后单击 login.jsp 完成连接。


6.

Property Inspector 中,将默认的 From Outcome 值从 success 更改为 login,以匹配您为 welcome.jsp 页面上 commandButton 的 Action 属性设置的值。


7.

在图上创建 Hello 页面。将一个 JSF Page 项拖放到页面流图上,并将其命名为 /hello.jsp

8.

通过单击该选项板中的 JSF Navigation Case 项,然后单击 login.jsp 图标来创建导航规则。单击 hello.jsp 完成连接。

 

9.

Property Inspector 中,将 From Outcome 的默认值 success 更改为 hello

 

10.

查看您刚定义的导航规则的真实语法:单击 faces-config.xml 文件的 Source 选项卡,查看指定的新导航规则。

请注意,一些 标记由于 login.jsp 和 hello.jsp 页面不存在报告了一个警告。


11.

单击 Diagram 选项卡返回至 Visual Editor,创建 login.jsp 页面。

为此,在 Visual Editor 中双击 login.jsp 页面图标,调用先前用过的 JSF JSP Wizard。


12.

单击 Next 跳过 Create JSF JSP Wizard 的 Welcome 页面。在 Step 1 中,确保为 login.jsp 文件名选中了 JSP Page 选项,然后单击 Next

 

13.

Step 2 中,指定您希望页面的组件与一个您同时创建的受管理 bean 自动绑定在一起。

为此,确保选中了 Automatically Expose UI Components in a New Managed Bean 单选按钮。接受 Bean 名称、类和包的默认值。单击 Next

 

14.

在检查完为该 JSP 页面启用的标记库后,单击 Step 3 中的 Next。在 Step 4 中,保留默认值,单击 Finish

 

15.

在设计编辑器中打开新的登录页面。

 

返回主题

在 Login 页面中添加详细信息

该页面使用户在输入有效的用户名和口令时前进到一个 hello.jsp 页面。

1.

添加一个标题 Application Login,并像以前一样用 H2 对其进行格式化。然后像以前一样应用 JDeveloper CSS

注意,您还可以从 Application Navigator 的 Web Content | css 文件夹中访问 jdeveloper.css


2.

要构建 Login 页面,您将使用在 JSF 规范中提供的一组基本组件:panelGridoutputlabelinputTextinputSecret, message 和您先前使用的 commandButtonpanelGrid 将用作一个表格结构来安排登录域的布局。
注意,HTML 表也可以用作登录域的容器,但 Panelgrid 代码更紧凑。

在 Component Palette 中,确保显示了 JSF HTML Palette 页面,并从 Component Palette 中选择 Panel Grid

 

3.

当您将 PanelGrid 拖到页面上时,将出现一个向导。单击 Next 跳过 Welcome 页面。指定您想创建一个 3 行空面板网格 (empty panel grid)

单击 Finish 将组件添加到页面上。然后您将在页面上看到一个矩形。

 

4.

将下列组件以下面的顺序从 Palette 中拖放到 panelGrid 中:Output labelInput Text


5.

使用属性检查器,将 Output Labelvalue 属性更改为 User Name

Input TextRequired 值更改为 True

 

6.

Message 组件从 Palette 拖放到 panelGrid。在 Message Properties 对话框,从 For 域旁边的下拉列表选择 inputText1。单击 OK

如果没有为 User Name 域指定值,则该消息返回一个错误。

 

7.

将下列组件以下面的顺序从 Palette 中拖放到 panelGrid 中:Output labelInput Secret

 

8.

使用 Property Inspector,将 Output Label value 属性更改为 Password

Input SecretRequired 值更改为 True

 

9.

选择 JSF Core 库,并从组件选项板中将 Validate Length 组件拖放到 Input Secret 域中。

在 Property Inspector 中,指定 4 为最小长度、8 为最大长度。

 

10.

Message 组件从 Palette 拖放到 panelGrid。在 Message Properties 对话框,从 For 域旁边的下拉列表选择 inputSecret1。单击 OK

如果没有指定值或字符串的长度少于 4 或多于 8 位,则该消息将返回错误。

 

11.

将一个 Command Button 拖放到 panelGrid 中。页面现在看起来应与下图类似:


12.

将 Command Button 的 Value 属性更改为 Hello Me。然后在 Action 属性的值内单击,使用向下箭头图标,从下拉列表中选择 hello 值。


13.

单击 Save All 图标保存您的工作。

 

返回主题

返回主题列表

构建 Hello 页面

1.

创建第三个页面 hello.jsp。该页阐释了如何使用一个辅助 bean 显示来自另一页面的信息。

双击图中的 hello.jsp 图标直接创建该页面。显示 Create JSF JSP Wizard - Welcome 屏幕。单击 Next 继续。


2.

hello.jsp 页面的 Step 2 中,选择 JSP Page 类型,然后单击 Next


3.

Step 2 中,选择 Do Not Automatically Expose UI components in a Managed Bean 选项。单击 Next


4.

Step 3 中,您将看到为该 JSP 页面启用的标记库。单击 Next。在 Step 4 中,接受所有默认值。单击 Finish

 

5.

您现在将在 Visual Editor 中看到该支持 JSF 的 JSP (hello.jsp) 的框架。


6.

将一个 H2 的标题 Hello 添加到页面中,并再次添加 JDeveloper 样式表


7.

挨着 Hello 文本,添加一个空格,从 JSF HTML 库拖放一个 Output Text 组件。


8.

对于 OutputText,在 Property Inspector 中删除 Value 属性的值,然后单击 Binding to Data 图标

 

9.

在 Value 对话框,展开 JSF Managed Beans | backing_login | inputText1,选择 value。按向右箭头按钮将选定项移到 Expression 域。单击 OK

 

10.

在 Hello 行下面的新行中,添加新文本 " You've successfully completed this Intro to JSF tutorial"。

 

11. 单击 Save All 图标保存您的工作。

返回主题列表

运行应用程序

1.

在页面流图中的 /welcome.jsp 页面上单击右键,并从上下文菜单中选择 Run

 

2.

内嵌的 OC4J 服务器启动。注意在日志窗口中显示的消息。


3.

Welcome 页面显示在您默认的浏览器中。单击 Proceed to Login 按钮。


4.

显示 Login 页面。不要键入任何值,单击 Hello Me 按钮测试 Required 域约束验证是否返回错误。

页面应看起来与下图类似:


5.

通过为 User Name 域指定一个值和一个单字符口令测试登录页面,然后单击 Proceed to Login 按钮。

现在页面应看起来与下图类似:


6.

重新启动登录页面,为 User Name 域指定一个值,为 password 域指定一个有效的字符串(长度介于 4 位和 8 位之间),然后单击 Proceed to Login 按钮。显示 Hello 页面,返回您的用户名。

从 Welcome 页面到 Login 页面、再到 Hello 页面的导航成功!


返回主题列表

创建条件导航

在该部分中,将测试输入的口令是否与预期的值相符。如果相符,则显示一个页面。否则,显示一个错误消息。

1.

返回,打开页面流图


2.

通过单击该选项板中的 JSF Navigation Case 项,然后单击 login.jsp 图标来创建导航规则。单击 welcome.jsp 完成连接。


3.

Property Inspector 中,将 From Outcome 的默认值 success 更改为 failed


4.

单击编辑器的 login.jsp 选项卡,打开该页面的 Design 视图,选择 Hello Me 按钮。

在 Property 窗格中,将 Action 属性的值设为 default,从而移除 hello 值。

 

5.

在 Structure 窗格中,右键单击与 Hello Me 按钮对应的 h:commandButton,从上下文菜单选择 Create Method Binding for Action 选项。


6.

接受默认值,单击 OK

 

7.

在 Source 编辑器中打开 Login.java 类,显示为该 commandButton 添加的新语句。

 

8.

// Add event 代码注释下面,移除 return null 语句,键入 ife

然后使用 CTRL + Enter 组合键自动生成 if - else 语句结构。

 

9.

由于可以从该 commanButton 访问两个潜在的目标页面,因此您需要通过编程设定导航到 Hello 页面或 Welcome 页面的规则。

更改 if 代码,如下所示:

if (inputSecret1.getValue().toString().equals("welcome")) {
return "hello";

 

10.

更改 else 代码,如下所示:

} else { String message = "Invalid login";
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(message));
return "failed";

 

11.

您的代码现在应如下所示:

if (inputSecret1.getValue().toString().equals("welcome")) {
return "hello";
} else {
String message = "Invalid login";
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(message));
return "failed";
}


12.

打开 Welcome 页面的 Design 视图。在 Proceed to Login 按钮的上面,添加一个新的空行。然后,从组件选项板的 JSF HTML 库拖放一个 Messages 组件。


13.

打开页面流图,右键单击 Welcome 页面,从上下文菜单中选择 Run

 

14.

单击 Proceed to Login 按钮,提供一个错误的口令值测试 Login 页面。

 

15.

Welcome 页面现在应与下图类似。

 

16. 您可以再次使用应用程序并对其进行测试。

在本教程中,您了解了如何使用 JavaServer Faces 构建 Web 界面。

您已学会了如何

返回主题列表

将鼠标置于该图标上可以隐藏所有的屏幕截图。

 

 

 

寄送此页面
打印机视图 打印机视图