| 在本教程中,您将使用 Sun Java Studio Creator 集成开发环境 (integrated development environment, IDE) 创建一个在两个页面之间共享数据的应用程序。应用程序提示用户输入信息。接着信息被存储在请求 Bean 属性中,并通过数据绑定对话框和修改源代码绑定到组件。然后,使用应用程序第二页上的组件共享和显示信息。 |
|
目录
|
![[spacer]](/im/a.gif) |
 |
使用请求 Bean 或会话 Bean
您可以使用请求 Bean 或会话 Bean 在两个页面之间发送数据。如果数据的生存期较短,则可以使用请求 Bean 存储该数据。但是,请注意,请求 Bean 只能维持一页请求的时间。当涉及大量数据时,使用请求 Bean 是有利的。完成页面请求后,用于存储数据的内存会被释放出来。
如果数据需要存在的时间超过了一页请求,则最好使用会话 Bean 存储该数据。在结束浏览器会话之前,数据将一直存在。在重定向(而不是转发)到需要该数据的另一页时,使用会话 Bean 存储数据。请注意,在 JavaServer Faces Web 应用程序中转发分发是缺省的导航机制。
在本教程中,使用的是请求 Bean(因为数据仅在两个页面之间共享),并使用按钮操作导航到第二页。有关受管 Bean 的其他信息,请参见教程 了解范围和受管 Bean。
创建第一页
在本部分中,将创建一个新项目及其第一页。您创建的该页提示用户输入名字、姓氏和最喜爱的运动。这些信息通过请求 Bean 属性(在本教程的后面部分中创建)以及数据绑定对话框进行存储。在 button1_action 方法内设置最喜爱运动的信息。下图显示了将在以下步骤中创建的页。
图 1:第一页 |
- 创建一个新的 Web 应用程序项目,并将其命名为
DataSharing。
- 将一个“标签”组件从组件面板的“基本”类别拖放到页面上。
将其 text 属性设置为 Please Enter Your Name:。
- 将一个“文本字段”组件拖放到“标签”组件下方。在“属性”窗口中,使用以下值设置其属性:
 |
(id) |
firstName
|
label |
First Name
|
required |
 选中 |
- 将另一个“文本字段”组件放置在
firstName 文本字段的下方。在“属性”窗口中,使用以下值设置此文本字段的一些属性:
 |
(id) |
lastName
|
label |
Last Name
|
required |
 选中 |
- 将另一个“标签”组件放置在
lastName 文本字段的下方。使用以下值设置标签组件的一些属性:
 |
(id) |
sportLabel
|
text |
Select Your Favorite Sport:
|
- 将一个“列表框”组件放置在 sportLabel 组件的右侧。
- 在“概要”窗口中选择 "listbox1DefaultOptions",如下图所示。
图 2:“概要”窗口中的 "listbox1DefaultOptions" 节点 |
- 在“属性”窗口中,单击 options 属性的省略号 (…) 按钮。
- 在 "listbox1DefaultOptions - options" 对话框中,按 Tab 键移动到每个表单元格,然后键入新值以修改每个现有缺省项。按照下图所示替换缺省值。单击“确定”以保存更改。
图 3:"listbox1DefaultOptions - options" 对话框 |
- 在可视设计器中,将一个“按钮”组件放置在“列表框”组件的下方,并将其 text 属性的值设置为
Done。
添加第二页和页面导航
在本部分中,将另一页添加到应用程序,并指定第一页和第二页之间的导航。第二页显示用户的信息。
- 右键单击可视设计器区域中的空白处,然后从弹出式菜单中选择“页面导航”。
导航编辑器将显示 Page1.jsp 图标,它表示您在上一部分中创建的页。
- 右键单击导航编辑区域中的空白处,然后从弹出式菜单中选择“新建页面”。
- 在“选择页面名称”对话框中单击“确定”接受缺省名称(即 Page2)。
- 单击 Page1.jsp 图标以将其放大。
- 单击 button1,然后拖动一条直线到 Page2.jsp 图标。按 Enter 键接受缺省的连线名称
case1。
下图显示了按钮已链接到该连线。
图 4:创建两个页面之间的页面导航 |
向第二页添加组件
现在,为第二页添加组件,该页显示用户在第一页上提供的信息。下图显示了将在以下步骤中创建的页。
图 5:第二页 |
- 在导航编辑区域中,双击 Page2.jsp 图标以便在可视设计器中显示第二页。
- 将一个“标签”组件从组件面板的“基本”类别拖动到页面上,并将其 text 属性更改为
My Personal Information。将其 labelLevel 属性设置为 Strong(1)。
- 将另一个“标签”组件和一个“静态文本”组件放置在第一个“标签”组件的下方。将第二个“标签”组件的 text 属性设置为
First Name:,并保留“静态文本”组件的缺省属性值。
- 将另外一对“标签”和“静态文本”组件拖放到第一个“静态文本”组件的下方。将“标签”组件的 text 属性设置为
Last Name:,并保留“静态文本”组件的缺省属性值。
- 将一个“标签”组件和一个“静态文本”组件放置在第三行。将“标签”组件的 text 属性设置为
My favorite sport is,并保留“静态文本”组件的缺省属性值。
存储用户信息
需要将用户输入的 First Name 和 Last Name 值存储在请求 Bean 的属性对象中,以便应用程序的第二页可以共享它们。
- 单击 Page1 标签以便在可视设计器中显示第一页。
- 在“项目”窗口中,右键单击 "DataSharing" 节点下的“请求 Bean”节点,然后选择“添加”>“属性”。
- 在“新建属性模式”对话框中,为三个文本字段输入以下值:
 |
名称 |
firstName
|
类型 |
String
|
模式 |
读/写
|
- 单击“确定”以接受这些值。
- 在可视设计器中,右键单击
firstName 文本字段组件,然后从弹出式菜单中选择“绑定到数据”。在“绑定到数据”对话框中,单击“绑定到对象”标签,然后选择 RequestBean1 节点下的 firstName,如下图所示。
图 6:Page1 的“绑定到数据”对话框 |
- 单击“确定”。
在“属性”窗口中,text 属性被更新为已绑定图标 和绑定目标值。
- 使用上面的步骤 2 添加另一个新属性,然后在“新建属性模式”对话框中使用以下值:
 |
名称 |
lastName
|
类型 |
String
|
模式 |
读/写
|
- 单击“确定”以接受这些值。
- 右键单击
lastName 文本字段组件,然后从弹出式菜单中选择“绑定到数据”。在“绑定到数据”对话框中,单击“绑定到对象”标签,然后选择 RequestBean1 节点下的 lastName 属性。单击“确定”。
- 使用上面的步骤 2 再添加一个新属性,然后在“新建属性模式”对话框中使用以下值:
 |
名称 |
favoriteSport
|
类型 |
String
|
模式 |
读/写
|
- 双击 "Done" 按钮,在 Java 编辑器中编辑源代码。将以下代码(以粗体显示)添加到
button1_action() 方法。
代码样例 1:button1_action 方法 |
public String button1_action() {
String favoriteSport = (String) listbox1.getSelected(); getRequestBean1().setFavoriteSport(favoriteSport);
// Note: The return value below must match the name of the
// connector line that was set in the Navigation Editor
return "case1";
} |
请注意,此步骤例举了另一种在请求 Bean 中存储数据的方法。在此步骤中,favoriteSport 组件的值是通过调用 favoriteSport 属性的 setter 方法存储的。该值也可以通过数据绑定对话框进行存储,如上面的步骤 5 和 9 所示。
检索用户信息
现在,绑定第二页上的静态文本组件,以便显示用户输入的数据。
- 单击 Page2 标签以便在可视设计器中查看第二页。
- 右键单击 First Name 标签旁边的 staticText1 组件,然后从弹出式菜单中选择“绑定到数据”。
- 在“绑定到数据”对话框中,单击“绑定到对象”标签。在 "RequestBean1" 节点下,选择 "firstName" 属性作为绑定目标,如下图所示。
图 7:Page2 的“绑定到数据”对话框 |
- 单击“确定”接受这些值。
在“属性”窗口中,请注意 text 属性的值被更新为已绑定图标 和绑定目标值。
- 右键单击 Last Name 标签组件旁边的 staticText2 组件,然后从弹出式菜单中选择“绑定到数据”。
- 在“绑定到数据”对话框中,单击“绑定到对象”标签。选择 lastName 属性作为绑定目标,然后单击“确定”。
- 单击编辑器工具栏中的 "Java",在 Java 编辑器中显示源代码。
- 在 IDE 底部左下角中“导航 - Page2”窗口中,查找 prerender() 成员节点。您可以使用快速搜索功能查找成员,方法是选择成员列表中的第一项,然后开始在“快速搜索”文本字段中键入成员名称的前几个字母。双击 prerender() 成员节点以便在 Java 编辑器中查看方法。下图显示了“导航 - Page2”窗口中的方法。
图 8:“导航 - Page2”窗口 |
- 添加以下粗体显示的代码。
代码样例 2:prerender 方法 |
public void prerender() {
staticText3.setText(getRequestBean1().getFavoriteSport());
} |
请注意,此步骤说明了另一种从请求 Bean 中检索数据的方法。在此步骤中,favoriteSport 组件的值是通过调用 favoriteSport 属性的 getter 方法检索的。该值也可以通过数据绑定对话框进行检索,如上面的步骤 3 和 6 所示。
部署应用程序
现在,部署和测试应用程序。
- 在第一页上,键入您的名字、姓氏,然后从列表框中选择您最喜爱的运动,如下图所示。
图 9:Web 应用程序的第一页 |
- 单击 "Done" 以查看第二页,该页与下图类似。
图 10:Web 应用程序的第二页 |
另请参见:
此页的最新修改时间:2006 年 1 月 25 日
|