< 上一课 | 下一课 >

课程 2.3:将详细信息字段绑定至表选择

在前面的课程中,已将 employeesTable 绑定至 Web Service 中的 getLightEmployeeRecords() 服务返回的 lightEmployeeRecordRows 数据对象。现在,需要根据表中选择的职员来填充详细信息字段。

要获取每个选择的职员的其他详细信息,需要使用另一个数据对象。将要添加的 selectedEmployeeRecord 数据对象是由 getFullEmployeeRecord() 服务返回的。此服务会将表中选择的职员的标识作为参数,并且会访存有关该职员的其他详细信息(包括电话号码和工作地点)。

将表绑定至行数据对象时使用的 JRowTableBinder 可以简化此步骤。JRowTableBinder 将表中选择的元素显示为单独的数据对象,该数据对象可以用作 getFullEmployeeRecord(java.lang.Integer) 方法的参数。然后,您可以很容易地将每个文本字段绑定至 selectedEmployeeRecord 数据对象中的相应属性。

Web Service 包括用于获取每个职员的所有详细信息的两个服务。表中会列示所有职员,但表中只会显示部分数据。这样,当选择了单个职员时,可以只检索该选择职员的其他方面的职员信息。如果在表请求数据时,Web Service 发送每个职员的所有数据,则 Web 流量可能很大并且会使应用程序的性能降低。

例如,如果职员记录包括照片或附件,则您在获取职员的完整列表时,并不想要检索所有照片。因此,使用 getLightEmployeeRecord 服务来填充表,而 getFullEmployeeRecord 会获取表中选择的职员的完整记录。

绑定姓字段

在此步骤中将字段绑定至 selectedEmployeeRecord 数据对象中的 lastName 属性:

  1. 在 Java Bean 视图或设计视图中,为“姓”(lastNameField)选择 JTextField。设计区域显示文本字段上的绑定选项卡。

    文本字段上的“绑定”选项卡

  2. 单击绑定选项卡以打开“字段数据绑定”对话框。
  3. 单击新建数据源数据对象。尽管现有 jRowTableBinder 数据对象会返回正确的姓,但是它不包括完整的职员记录。您需要创建表示完整的职员记录的新数据对象。
  4. 源类型字段中,确保选择了 Web Service,而在数据源中,确保选择了 webServiceDataSource
  5. 源服务列表中,选择 getFullEmployeeRecord(java.lang.Integer)。“新建数据源数据对象”对话框会列示返回与文本字段兼容的数据对象的服务。
  6. 名称字段中,输入 selectedEmployeeRecord
  7. 自变量字段中,选择 jRowTableBinder,然后在属性字段中,选择 employeeID。选择的行的职员标识现在设置为 getFullEmployeeRecord() 服务方法的自变量。
    注: getFullEmployeeRecord(java.lang.Integer) 要求将整数作为自变量。您需要使用职员表中当前选择的职员标识来检索完整的记录。当绑定了表时,可视编辑器自动生成了 jRowTableBinder(它将侦听当前在该职员表中进行的选择)。对于整数参数,将使用 jRowTableBinder 中选择的行的 employeeID。

    “新建数据源数据对象”对话框

  8. 单击确定
  9. 在“字段数据绑定”对话框中,确保在“数据对象”列表中选择了 selectedEmployeeRecord。注意,与 jRowTableBinder 数据对象相比,selectedEmployeeRecord 数据对象具有更多可用的属性。
  10. 数据对象属性列表中,选择 lastName 属性。

    lastNameField 的“字段数据绑定”对话框

  11. 单击确定。应用程序中的“姓”字段现在已绑定至 selectedEmployeeRecord 数据对象的 lastName 属性,该数据对象由 getFullEmployeeRecord() 返回。

    将创建名为 selectedEmployeeRecord 的新数据对象并且会将它添加至应用程序。该数据对象的可视表示会添加至设计视图的自由格式区域,如下图所示:

    selectedEmployeeRecord 数据对象

    现在,当在设计区域中选择 lastName 字段时,会有一条线指示它已绑定至 selectedEmployeeRecord。在这条线的中间,文本绑定程序“文本绑定程序”图标表示用于此绑定的 SwingTextComponentBinder。如果在设计区域上选择这条线或表示绑定程序的图标,则可以在“属性”视图中检查绑定程序的属性。

绑定剩余的详细信息字段

要绑定职员的其余的每个详细信息字段,将遵循与“姓”字段相似的过程,但是不需要添加数据对象。因为已添加了 selectedEmployeeRecord 数据对象,所以可以只将每个字段绑定至 selectedEmployeeRecord 数据对象中的相应属性。

要绑定字段,请对应用程序的职员详细信息部分中的每个字段完成下列步骤:
  1. 在设计视图中,选择字段并单击绑定选项卡。
  2. 在“字段数据绑定”对话框的数据对象列表中选择 selectedEmployeeRecord。
  3. 数据对象属性列表中,选择要绑定的字段的相应属性。以下图表显示每个文本字段需要绑定至的属性:
    字段 selectedEmployeeRecord 数据对象中的属性
    lastNameField lastName
    firstNameField firstName
    idField employeeID
    emailField email
    phoneField phoneNum
    officeField location.office
    buildingField location.building
    siteField location.site
  4. 单击确定

当绑定完文本字段时,设计区域看起来应如下图所示:

显示已绑定文本字段的图形画布的视图

使职员标识字段成为只读

因为职员标识字段上的可编辑属性设置为 false,所以该字段被禁用。然而,当数据对象包含值时,文本字段绑定程序的缺省行为会将该字段更改为启用状态。可以关闭此绑定程序行为,这样该字段将保持为它的初始的只读状态。

要防止绑定程序自动切换可编辑属性:
  1. 选择“职员标识”字段。设计区域上会显示一条线,它带有表示该字段的绑定程序的图标 “文本绑定程序”图标
  2. 单击“职员标识”字段的绑定程序 “文本绑定程序”图标 图标。
  3. 在“属性”视图中,将 autoEditable 属性更改为 false。按 Enter 键。

课程要点

现在,当运行应用程序并从表中选择职员时,该职员的记录的详细信息会显示在详细信息字段中。

< 上一课 | 下一课 >