本节将把 Web 页面中的 Drop Down List 和 Table 组件绑定到上节定义的 SessionBean1 中。
1. 在 Visual Designer 中打开 Page1.jsp。
2. 右键单击 Drop Down List 组件,选择 Property Bindings ,打开 Property Bindings 对话框窗口。
3. 选择 Select bindable property 列表中的 items 和 Select binding target 列表中的 personOptions (位于 SessionBean1 节点下)。单击 Apply 按钮。
4. 在 Property Bindings 对话框中,选择 Select bindable property 列表中的 selected 和 Select binding target 列表中的 selectedPersonId(位于 SessionBean1 节点下)。单击 Apply 按钮。
5. 单击 Close 按钮,关闭对话框窗口。
6. 在 Visual Designer 中,右键单击 Table 组件,选择 Table Layout。
7. 在此对话框中,在 Get Data From 的下拉列表中选择 trips4Person (SessionBean1) 。
注意: 如果在下拉列表中没有 trips4Person (SessionBean1),很可能是因为您在上节没有建立该项目。
8. 在 Selected 列表中选择 personId,单击左箭头按钮将 Selected 列表中的选项移到 Available 列表中。
9. 使用向上和向下按钮按照以下顺序排列剩下的字段,如下图所示,单击 OK 按钮。
10. 在 Editing 工具栏中,单击 Java ,在 Java 编辑器中打开 Page1.java。
11. 在 prerender 方法中,添加以下代码(粗体)。
public void prerender() {
try {
if (dropDown1.getSelected() == null ) {
Option firstPerson = getSessionBean1().getPersonOptions()[0];
getSessionBean1().setSelectedPersonId((Integer)firstPerson.getValue());
}
} catch (Exception ex) {
log("Error Description", ex);
error(ex.getMessage());
}
}
在 Web 浏览器显示页面之前,调用 prerender 方法。在 prerender 方法中添加代码,这样,当第一个用户访问页面时,页面可以在下拉菜单中显示第一个人的信息,。
当浏览器第一次请求该页面时,应用程序会创建一个 Pagel 实例,调用 prerender 方法。服务器会发送一个响应( HTML 页面),并销毁 Page1 实例。应用程序不调用值改变事件处理程序,因为当页面提交时,应用程序只能生成值改变事件(某些情况下,当选择了一个新人时)。
12. 在 source 中,单击鼠标右键,在弹出的菜单中选择 Fix Imports,打开 Fix Imports 对话框。在 Fully Qualified Name 下拉列表,选择 com.sun.Webui.jsf.model.Option,如下图所示。
Fix Imports dialog box
13. 修改并保存。