» 搜索提示 
 
在两个页面之间共享数据
2006 年 1 月 [修订号:V2-3]  
在本教程中,您将使用 Sun Java Studio Creator 集成开发环境 (integrated development environment, IDE) 创建一个在两个页面之间共享数据的应用程序。应用程序提示用户输入信息。接着信息被存储在请求 Bean 属性中,并通过数据绑定对话框和修改源代码绑定到组件。然后,使用应用程序第二页上的组件共享和显示信息。
 
目录
 
使用请求 Bean 或会话 Bean
创建第一页
添加第二页和页面导航
向第二页添加组件
存储用户信息
检索用户信息
部署应用程序
[spacer] 此页上的内容适用于 Sun Java Studio Creator 2
 
要完成本教程,需要了解如何创建项目和设计 Web 应用程序。有关详细信息,请参见 Java Studio Creator 入门指南使用简单页面导航教程。
 

使用请求 Bean 或会话 Bean

 
您可以使用请求 Bean 或会话 Bean 在两个页面之间发送数据。如果数据的生存期较短,则可以使用请求 Bean 存储该数据。但是,请注意,请求 Bean 只能维持一页请求的时间。当涉及大量数据时,使用请求 Bean 是有利的。完成页面请求后,用于存储数据的内存会被释放出来。
 
如果数据需要存在的时间超过了一页请求,则最好使用会话 Bean 存储该数据。在结束浏览器会话之前,数据将一直存在。在重定向(而不是转发)到需要该数据的另一页时,使用会话 Bean 存储数据。请注意,在 JavaServer Faces Web 应用程序中转发分发是缺省的导航机制。
 
在本教程中,使用的是请求 Bean(因为数据仅在两个页面之间共享),并使用按钮操作导航到第二页。有关受管 Bean 的其他信息,请参见教程了解范围和受管 Bean。  
 

创建第一页

 
在本部分中,将创建一个新项目及其第一页。您创建的该页提示用户输入名字、姓氏和最喜爱的运动。这些信息通过请求 Bean 属性(在本教程的后面部分中创建)以及数据绑定对话框进行存储。在 button1_action 方法内设置最喜爱运动的信息。下图显示了将在以下步骤中创建的页。
 
图 1:第一页
图 1:第一页
 
  1. 创建一个新的 Web 应用程序项目,并将其命名为 DataSharing

  2. 将一个“标签”组件从组件面板的“基本”类别拖放到页面上。

    将其 text 属性设置为 Please Enter Your Name:。

  3. 将一个“文本字段”组件拖放到“标签”组件下方。在“属性”窗口中,使用以下值设置其属性:

    属性     
    (id)
    firstName
    label
    First Name
    required
    复选标记图标 选中


  4. 将另一个“文本字段”组件放置在 firstName 文本字段的下方。在“属性”窗口中,使用以下值设置此文本字段的一些属性:

    属性     
    (id)
    lastName
    label
    Last Name
    required
    复选标记图标 选中


  5. 将另一个“标签”组件放置在 lastName 文本字段的下方。使用以下值设置标签组件的一些属性:

    属性
         值
    (id)
    sportLabel
    text
    Select Your Favorite Sport:


  6. 将一个“列表框”组件放置在 sportLabel 组件的右侧。

  7. 在“概要”窗口中选择 "listbox1DefaultOptions",如下图所示。

    图 2:“概要”窗口中的 "listbox1DefaultOptions" 节点
    图 2:“概要”窗口中的 "listbox1DefaultOptions" 节点
     
  8. 在“属性”窗口中,单击 options 属性的省略号 () 按钮。

  9. 在 "listbox1DefaultOptions - options" 对话框中,按 Tab 键移动到每个表单元格,然后键入新值以修改每个现有缺省项。按照下图所示替换缺省值。单击“确定”以保存更改。

    图 3:"listbox1DefaultOptions - options" 对话框
    图 3:"listbox1DefaultOptions - options" 对话框
     
  10. 在可视设计器中,将一个“按钮”组件放置在“列表框”组件的下方,并将其 text 属性的值设置为 Done
 

添加第二页和页面导航

 
在本部分中,将另一页添加到应用程序,并指定第一页和第二页之间的导航。第二页显示用户的信息。
  1. 右键单击可视设计器区域中的空白处,然后从弹出式菜单中选择“页面导航”。

    导航编辑器将显示 Page1.jsp 图标,它表示您在上一部分中创建的页。

  2. 右键单击导航编辑区域中的空白处,然后从弹出式菜单中选择“新建页面”。

  3. 在“选择页面名称”对话框中单击“确定”接受缺省名称(即 Page2)。

  4. 单击 Page1.jsp 图标以将其放大。

  5. 单击 button1,然后拖动一条直线到 Page2.jsp 图标。按 Enter 键接受缺省的连线名称 case1

    下图显示了按钮已链接到该连线。

    图 4:创建两个页面之间的页面导航
    图 4:创建两个页面之间的页面导航
     

向第二页添加组件

 
现在,为第二页添加组件,该页显示用户在第一页上提供的信息。下图显示了将在以下步骤中创建的页。
 
图 5:第二页
图 5:第二页
 
  1. 在导航编辑区域中,双击 Page2.jsp 图标以便在可视设计器中显示第二页。

  2. 将一个“标签”组件从组件面板的“基本”类别拖动到页面上,并将其 text 属性更改为 My Personal Information。将其 labelLevel 属性设置为 Strong(1)

  3. 将另一个“标签”组件和一个“静态文本”组件放置在第一个“标签”组件的下方。将第二个“标签”组件的 text 属性设置为 First Name:,并保留“静态文本”组件的缺省属性值。

  4. 将另外一对“标签”和“静态文本”组件拖放到第一个“静态文本”组件的下方。将“标签”组件的 text 属性设置为 Last Name:,并保留“静态文本”组件的缺省属性值。

  5. 将一个“标签”组件和一个“静态文本”组件放置在第三行。将“标签”组件的 text 属性设置为 My favorite sport is,并保留“静态文本”组件的缺省属性值。
 

存储用户信息

 
需要将用户输入的 First Name 和 Last Name 值存储在请求 Bean 的属性对象中,以便应用程序的第二页可以共享它们。
  1. 单击 Page1 标签以便在可视设计器中显示第一页。

  2. 在“项目”窗口中,右键单击 "DataSharing" 节点下的“请求 Bean”节点,然后选择“添加”>“属性”。

  3. 在“新建属性模式”对话框中,为三个文本字段输入以下值:

    文本字段     
    名称
    firstName
    类型
    String
    模式
    读/写


  4. 单击“确定”以接受这些值。

  5. 在可视设计器中,右键单击 firstName 文本字段组件,然后从弹出式菜单中选择“绑定到数据”。在“绑定到数据”对话框中,单击“绑定到对象”标签,然后选择 RequestBean1 节点下的 firstName,如下图所示。

    图 6:Page1 的“绑定到数据”对话框
    图 6:Page1 的“绑定到数据”对话框


  6. 单击“确定”。

    在“属性”窗口中,text 属性被更新为已绑定图标“绑定属性”的图标和绑定目标值。

  7. 使用上面的步骤 2 添加另一个新属性,然后在“新建属性模式”对话框中使用以下值:

    文本字段     
    名称
    lastName
    类型
    String
    模式
    读/写


  8. 单击“确定”以接受这些值。

  9. 右键单击 lastName 文本字段组件,然后从弹出式菜单中选择“绑定到数据”。在“绑定到数据”对话框中,单击“绑定到对象”标签,然后选择 RequestBean1 节点下的 lastName 属性。单击“确定”。

  10. 使用上面的步骤 2 再添加一个新属性,然后在“新建属性模式”对话框中使用以下值:

    文本字段     
    名称
    favoriteSport
    类型
    String
    模式
    读/写

  11. 双击 "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 所示。
 

检索用户信息

 
现在,绑定第二页上的静态文本组件,以便显示用户输入的数据。
  1. 单击 Page2 标签以便在可视设计器中查看第二页。

  2. 右键单击 First Name 标签旁边的 staticText1 组件,然后从弹出式菜单中选择“绑定到数据”。

  3. 在“绑定到数据”对话框中,单击“绑定到对象”标签。在 "RequestBean1" 节点下,选择 "firstName" 属性作为绑定目标,如下图所示。

    图 7:Page2 的“绑定到数据”对话框
    图 7:Page2 的“绑定到数据”对话框
     
  4. 单击“确定”接受这些值。

    在“属性”窗口中,请注意 text 属性的值被更新为已绑定图标“绑定属性”的图标和绑定目标值。

  5. 右键单击 Last Name 标签组件旁边的 staticText2 组件,然后从弹出式菜单中选择“绑定到数据”。

  6. 在“绑定到数据”对话框中,单击“绑定到对象”标签。选择 lastName 属性作为绑定目标,然后单击“确定”。

  7. 单击编辑器工具栏中的 "Java",在 Java 编辑器中显示源代码。

  8. 在 IDE 底部左下角中“导航 - Page2”窗口中,查找 prerender() 成员节点。您可以使用快速搜索功能查找成员,方法是选择成员列表中的第一项,然后开始在“快速搜索”文本字段中键入成员名称的前几个字母。双击 prerender() 成员节点以便在 Java 编辑器中查看方法。下图显示了“导航 - Page2”窗口中的方法。

    图 8:“导航 - Page2”窗口
    图 8:“导航 - Page2”窗口
     
  9. 添加以下粗体显示的代码。

    代码样例 2:prerender 方法
    public void prerender() {
        staticText3.setText(getRequestBean1().getFavoriteSport());
    }
     
    请注意,此步骤说明了另一种从请求 Bean 中检索数据的方法。在此步骤中,favoriteSport 组件的值是通过调用 favoriteSport 属性的 getter 方法检索的。该值也可以通过数据绑定对话框进行检索,如上面的步骤 3 和 6 所示。
 

部署应用程序

 
现在,部署和测试应用程序。
  1. 在第一页上,键入您的名字、姓氏,然后从列表框中选择您最喜爱的运动,如下图所示。

    图 9:Web 应用程序的第一页
    图 9:Web 应用程序的第一页
     
  2. 单击 "Done" 以查看第二页,该页与下图类似。

    图 10:Web 应用程序的第二页
    图 10:Web 应用程序的第二页
     
另请参见

 
此页的最新修改时间:2006 年 1 月 25 日