» 搜索提示 
 
使用 EJB 组件
2006 年 1 月 [修订号:V2-3]  
在本教程中,您将使用 Sun Java Studio Creator 集成开发环境 (integrated development environment, IDE) 创建并部署一个使用 Enterprise JavaBeans 组件的应用程序。Enterprise JavaBeans 组件是用 Java 编程语言编写的服务器端组件,用于封装应用程序的业务逻辑。业务逻辑是指用于实现应用程序目的的代码。在本教程中生成的应用程序使用 TravelEJB(IDE 提供的预装样例之一)访问数据库中的信息。
 
目录
 
创建包括一个下拉列表组件的页
添加一个 EJB 组件并将下拉列表绑定到数据提供器
测试下拉列表
添加一个表并将其绑定到数据提供器
根据下拉列表填充表
运行项目
[spacer] 此页上的内容适用于 Sun Java Studio Creator 2
 

创建包括一个下拉列表组件的页

 
在本教程中,您将生成一个 Travel Center 应用程序,如下图所示。
 
图 1:Travel Center Web 应用程序
图 1:Travel Center Web 应用程序
 
首先,将一个下拉列表组件添加到应用程序的起始页。
  1. 创建一个新的 JavaServer Faces (JSF) Web 应用程序项目,并将其命名为 EJBExample

    IDE 创建名为 Page1 的缺省起始页,并在可视设计器中显示该页。

  2. 将一个“下拉列表”组件从组件面板的“基本”类别拖放到该页的左上角。

  3. 在“属性”窗口中,将其 id 更改为 nameDropDown

  4. 右键单击“下拉列表”组件,然后选择“更改时自动提交”。

    “更改时自动提交”功能可确保用户重新从下拉列表中选择时,应用程序会重新提交和更新页。

  5. 将一个“消息组”组件从组件面板的“基本”类别拖放到页的左下角。

    此组件对于诊断编程错误是很有用的。通过调用 error(String) 方法,可以使诊断消息出现在此组件中。消息组组件显示 String 参数的值。除此之外,有关运行时错误、验证错误和转换错误的消息在缺省情况下会出现在此组件中。
 

添加一个 EJB 组件并将下拉列表绑定到数据提供器

 
接下来,将一个 EJB 组件添加到页,并将下拉列表绑定到 getPersons 方法。应用程序部署好之后,下拉列表会显示旅行者的名字列表。
  1. 打开“服务器”窗口,然后展开 "Enterprise Java Beans" > "Travel Center" > "TravelEJB",如图 2 所示。

    图 2:“服务器”窗口
    图 2:“服务器”窗口
     
  2. getPersons 方法从“服务器”窗口拖放到“下拉列表”上。

    下拉列表中的值将从 item 1 更改为 abc。文本 "abc" 指示显示字段已绑定到 String 对象(在本例中,此对象为返回的 Bean 类的 name 属性)。

    travelGetPersons1 和 travelClient1 将出现在“概要”窗口中。travelClient1 是 TravelEJB 的客户端实例,而 travelGetPersons1 是 getPersons 方法的数据提供器。

  3. 右键单击下拉列表,然后选择“绑定到数据”。

    将打开“绑定到数据”对话框。

  4. 在“绑定到数据提供器”标签中,设置以下三个值,如图 3 所示。

    下拉列表:travelGetPersons1 (Page 1)
    值字段:personId
    显示字段:name


    图 3:“绑定到数据”对话框 图 3:“绑定到数据”对话框
     
  5. 单击“确定”。
 

测试下拉列表

 
  1. 打开“服务器”窗口,并确保捆绑的数据库服务器正在运行。

    如果服务器正在运行,则“Bundled Database 服务器”节点的左侧会出现一个绿色状态图标。如果捆绑的数据库服务器没有运行,请右键单击“Bundled Database 服务器”节点,然后从弹出式菜单中选择“启动 Bundled Database”。

  2. 运行应用程序,并验证下拉列表是否显示名字的列表。
 

添加一个表并将其绑定到数据提供器

 
接下来,将一个表添加到页面,并将其绑定到 TravelEJB 的 getTripsByPerson 方法。应用程序部署好之后,该表会显示数据库中的主要-详细数据。当您从下拉列表中选择一个人时,应用程序会在下面的表中显示这个人的旅行记录。
  1. 将一个“表”组件从组件面板的“基本”类别拖放到可视设计器中下拉列表的下方。

    在运行的应用程序中,表显示所选旅行者的行程。图 4 显示了页面布局和在后续步骤中设计的表。

    图 4:包括表组件的页面设计
    图 4:包括表组件的页面设计
     
  2. 在“服务器”窗口中,将 getTripsByPerson 方法拖放到可视设计器中的“表”上。

    数据提供器中的值字段将显示为表中的列名。

  3. 右键单击表头,然后从弹出式菜单中选择“表布局”。

  4. 在“表布局”对话框中,将 tripid 和 personid 从“选定”列表移动到“可用”列表,方法是选择每一项后单击 < 按钮。

  5. 将 depDate 移动到“选定”列表的顶部,方法是选择后单击“上移”按钮。

  6. 将 depDate 的标题文本更改为 Departure Date

    请注意,可以将一个转换器拖放到表中的 depDate 列上,并将其设置为仅显示日期。有关详细信息,请参见使用转换器教程。

    图 5 显示了“表布局”对话框,其中包括到目前为止所做的更改。

    图 5:“表布局”对话框
    图 5:“表布局”对话框
     
  7. 选择 depCity,并将其标题文本更改为 Departure City

  8. 选择 destCity,并将其标题文本更改为 Destination City

  9. 选择 tripType,并将其标题文本更改为 Trip Type

  10. 单击“选项”标签,并将标题更改为 Trips

  11. 单击“确定”应用更改并关闭“表布局”对话框。
 

根据下拉列表填充表

 
  1. 在可视设计器中,双击“下拉列表”。

    将打开 Java 编辑器,插入点位于 nameDropDown_processValueChange 方法中。

  2. 打开组件面板的“代码片段”标签,并滚动到 Enterprise Java Beans 节点。

    图 6 显示了 Enterprise Java Beans 节点及其三个代码片段(在下面的步骤中将它们添加到您的代码)。

    图 6:Enterprise Java Beans
    图 6: Enterprise Java Beans
     
  3. 将“DropDown 进程值更改”从组件面板的“代码片段”标签拖放到 nameDropDown_processValueChange 方法中。

    此代码片段用于从下拉列表获取所选的用户 ID,然后将该 ID 设置为表的数据提供器。

  4. 将“获取第一个用户 ID”代码片段从组件面板拖放到 Java 编辑器中,使其紧邻最后一个花括号之前。请注意,包括 Rowkey 类的语句包含一个语法错误,因为文件尚未包括该类的 import 语句。将在下一步中添加 import 语句。

    “获取第一个用户 ID”代码用于从 travelGetPerson1 数据提供器获取第一个用户的 ID。

  5. 在 Java 编辑器中的任意位置单击鼠标右键,然后选择“修复导入”。

    “修复导入”命令会自动添加代码所需的 import 语句,并删除未使用的 import 语句。“修复导入”命令不删除代码中可能包含的任何全限定类名称。

  6. 向上滚动到 init 方法,然后将“选择第一个用户”从组件面板的“代码片段”拖放到注释语句 Creator 管理的组件初始化之后。按 Control-Shift-F 组合键自动重新设置代码格式。结果类似于以下代码样例。“选择第一个用户”代码以粗体显示。

    代码样例 1:包含“选择第一个用户”代码的 init 方法
    public void init() {
            // Perform initializations inherited from our superclass
            super.init();
            // Perform application initialization that must complete
            // *before* managed components are initialized
            // TODO - add your own initialiation code here    
                       /Creator-managed Component Initialization/
            // Perform application initialization that must complete
            // *after* managed components are initialized
            // TODO - add your own initialization code here
            
    	// Initialize the drop down to select the first person
    	// and the data provider to get the trips for the first person
    	Integer firstPerson = getFirstPersonId();
    	nameDropDown.setSelected( firstPerson );
    	travelGetTripsByPerson1.setPersonId( firstPerson );
    
        }
    
     
    此代码片段使用 travelGetPeople1 数据提供器中的第一个名字初始化下拉列表。该代码还从 travelGetTripsByPerson1 数据提供器中检索第一个用户的行程。当选择其他用户时,Trips 表的内容也会随之改变。
 

运行项目

 
  1. 运行项目。

  2. 从下拉列表中选择一个名字,您会注意到数据表被更新。图 7 显示了 John Black 的旅行路线。

    图 7:最终的 Web 应用程序
    图 7:最终的 Web 应用程序
     
另请参见

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