练习 1.4:创建用于创建和更新用户信息的页面
在开始之前,必须先完成练习 1.3:开发 UserAdmin 页面。
根据您在 Web 图中定义的应用程序流,应当具有单独的 UserAdmin 页面分别用于创建用户信息(UserAdminCreate.jsp) 和更新现有用户信息(UserAdminUpdate.jsp)。
创建 UserAdminCreate.jsp 页面
在此部分练习中,通过使用会话 bean,您将在 UserAdminCreate 页面中创建一个数据访问,该页面使管理员能够创建新的用户记录。因为必须提供“用户标识”值才能创建新的用户记录,所以此页面还合并了验证逻辑。另外,将添加一个“取消”按钮,以允许用户结束此过程。
- 返回至 Web 图编辑器并双击 UserAdminCreate.jsp 页面。
- 单击创建向导中的完成。
将在编辑区域中打开空的文件。
- 删除缺省文本将内容放在此处。
- 将 EJB 会话 bean 对象从选用板的数据抽屉拖动至该文件。
- 当“会话 Bean”向导打开时,选择 ejb/UserFacade 并单击下一步。
- 选择 create(RegistrationData 数据)接口,它将用于 portlet 页面上的输入字段。
- 单击下一步。
- 在“输入表单”页面中,将定义一个输入表单,该输入表单将在数据库中创建新的数据。单击无以取消选择所有字段,以便您可以单独选择、组织和配置该输入表单中要用于 portlet 页面的适当字段。然后,选择下列字段的复选框:
- data.userid
- data.name
- data.email
- 使用向上向下箭头按钮移动所选数据字段,使其顺序与上一步中显示的顺序一致。
- 选择 data.userid 字段的标签值,并将它更改为用户标识:。
- 单击选项按钮,并在标签字段中输入创建。单击确定。
- 单击完成以在 UserAdminCreate.jsp 页面中生成输入表单。该用户界面看起来将类似于以下内容:

- 选择该页面中的创建按钮。
- 如果“属性”视图尚不是活动的,则打开它,并单击添加规则按钮。(您可能需要滚动到右边。)
。
- 在添加导航规则对话框中,从页面列表框中选择 UserAdminView.jsp。
- 选择命名结果单选按钮并输入 view。
- 单击确定。
- 单击快速编辑视图选项卡。单击“快速编辑”编辑区域,并在返回字符串中输入“view”:
return "view";
添加验证逻辑
因为“用户标识”值是此页面必需的输入,所以应该添加验证逻辑来检查是否指定了用户标识。
- 选择用户标识:输入组件。
- 打开“属性”视图。
- 选择验证选项卡。
- 单击必需输入值复选框。
- 保存 UserAdminCreate.jsp。
不必编写运行这一部分应用程序所需的任何代码。会生成所有将调用和结果绑定至用户界面的 EJB 引用逻辑和代码。
添加“取消”逻辑
另外,还应该添加“取消”按钮,以及连接至搜索页面的适当导航:
- 将命令 - 按钮从 Faces 组件选用板抽屉拖放到创建按钮旁边。
- 如果“属性”视图尚不是活动的,则打开它。
- 在属性集中单击显示选项选项卡,并在按钮标签字段中输入取消,然后按 Enter 键。
- 单击快速编辑视图选项卡。单击“快速编辑”编辑区域,并在返回字符串中输入“view”:
return "view";
- 保存该文件。现在,UserAdminCreate.jsp 页面看起来应该类似于以下内容:

创建 UserAdminUpdate.jsp 页面
在此部分练习中,通过使用 JavaBean,将创建一个数据访问来更新 UserAdminUpdate 页面中的用户信息。另外,将添加一个“取消”按钮以允许用户结束此过程,并添加更多代码以获得现有记录,以便在此页面中可以更新它们。
- 返回至 Web 图编辑器并双击 UserAdminUpdate.jsp 页面。
- 单击创建向导中的完成。
将在编辑区域中打开空的文件。
- 删除缺省文本将内容放在此处。
- 将 EJB 会话 bean 对象从选用板的数据抽屉拖动至该文件。
- 当“会话 Bean”向导打开时,选择 ejb/UserFacade 并单击下一步。
- 选择 update(RegistrationData 数据)接口,它将用于 portlet 页面上的输入字段。
- 单击下一步。
- 在“输入表单”页面中,将定义一个输入表单,该输入表单将更新数据库中的数据。单击无以取消选择所有字段,以便您可以单独选择、组织和配置输入字段中要用于 portlet 页面的适当字段。然后,选择下列字段的复选框:
- data.userid
- data.name
- data.email
- 使用向上向下箭头按钮移动所选数据字段,使其顺序与上一步中显示的顺序一致。
- 选择 data.userid 字段的标签值,并将它更改为用户标识:。
- 因为您想避免在更新 portlet 中的其它信息时更改标识,所以从 data.userid 的控件类型列表中选择输出字段。
- 单击选项按钮,并在标签字段中输入更新。单击确定。
- 单击完成以便在 UserAdminUpdate.jsp 页面中生成输入表单。该用户界面看起来将类似于以下内容:

- 选择该页面中的更新按钮。
- 如果“属性”视图尚不是活动的,则打开它,并单击添加规则按钮。(您可能需要滚动到右边。)
- 在添加导航规则对话框中,从页面列表框中选择 UserAdminView.jsp。
- 选择命名结果单选按钮并输入 view。
- 单击确定。
- 单击快速编辑视图选项卡。单击“快速编辑”编辑区域,并在返回字符串中输入“view”:
return "view";
不必编写运行这一部分应用程序所需的任何代码。会生成所有将调用和结果绑定至用户界面的 EJB 引用逻辑和代码。
添加“取消”逻辑
另外,还应该添加“取消”按钮,以及连接至搜索页面的适当导航:
- 将命令 - 按钮从 Faces 组件选用板抽屉拖放到更新按钮旁边。
- 如果“属性”视图尚不是活动的,则打开它。
- 在属性集中单击显示选项选项卡,并在按钮标签字段中输入取消,然后按 Enter 键。
- 单击快速编辑视图选项卡。单击“快速编辑”编辑区域,并在返回字符串中输入“view”:
return "view";
- 保存该文件。现在,UserAdminUpdate.jsp 页面看起来应该类似于以下内容:

添加更多代码以更新现有记录
在此部分练习中添加的更新逻辑使应用程序能够获得现有记录,从而用户可以使用此页面来更新它们。通过使用 UserFacade 提供的方法 findById() 来初始化参数 bean,就会为表单填充相关数据。
- 从 UserAdminUpdate.jsp 弹出菜单中选择编辑页面代码。页面代码是一个包含 UserAdminUpdate.jsp 底层逻辑的 Java 文件。插入以下代码(粗体部分):
public UserFacadeLocalUpdateParamBean getUserFacadeLocalUpdateParamBean() {
if (userFacadeLocalUpdateParamBean == null) {
userFacadeLocalUpdateParamBean = new UserFacadeLocalUpdateParamBean();
Integer userid = (Integer)getSessionScope().get("userid");
try {
userFacadeLocalUpdateParamBean.setData(getUserFacadeLocal()
.findById(userid));
} catch (Exception e) {
logException(e);
}
}
return userFacadeLocalUpdateParamBean;
}
- 保存并关闭 UserAdminUpdate.java。
添加链接以便于进行页面导航
最后,为了完成 UserAdmin portlet,必须添加一些链接以便能够从主控页面(UserAdminView.jsp)导航至详细信息页面(UserAdminCreate.jsp 和 UserAdminUpdate.jsp)。要添加链接,遵循下列步骤:
- 返回至“Web 图”文件,了解已完成的 Web 图的最终模样:

注意,每个“Web 页面”节点都已实现,并且“命令”按钮链接也已就位。
- 打开 UserAdminView.jsp。
- 将链接组件从 Faces 组件选用板抽屉拖放到该文件中的数据表旁边。
- 在 URL 字段中输入 /UserAdminCreate.jsp,并在标签字段中输入创建。单击确定。
- 将命令 - 超链接组件从 Faces 组件选用板抽屉拖放到数据表中标签为 {userid} 的输出字段上。
- 如果“属性”视图尚不是活动的,则打开它,并单击添加规则按钮。(您可能需要滚动到右边。)
- 在添加导航规则对话框中,从页面列表框中选择 UserAdminUpdate.jsp。
- 选择命名结果单选按钮并输入更新。
- 单击确定。
- 选择“属性”视图中的参数选项卡。
- 单击添加参数按钮。
- 在名称字段中输入 userid。
- 单击值字段中的单元格,然后单击“浏览”图标以打开选择页数据对象对话框。展开 userFacadeLocal > findByName(java.lang.String) > userFacadeLocalFindByNameResultBean,在选择页数据对象对话框中选择 userid (java.lang.Integer)。

- 单击确定。
接下来,必须添加代码以将参数存储在会话作用域中,以便更新页面可以使用用户标识来为更新页面中的输入表单提供用户信息。
- 单击快速编辑视图选项卡。单击“快速编辑”编辑区域(这将为与更新按钮相关联的操作码创建一个空模板),并输入以下代码:
String userid = (String)getRequestParam().get("userid");
getSessionScope().put("userid", new Integer(userid));
return "update";
- 保存并关闭该文件。
运行 UserAdmin portlet
要验证 UserAdmin portlet 中的页面到目前为止一直在按预期运行,您应该在与 Rational Developer 一起提供的内部浏览器中运行 JSP 文件。要运行 UserAdmin portlet,执行下列步骤:
- 在“项目资源管理器”中选择 AuctionPortlet 项目,并从弹出菜单中选择运行 > 在服务器上运行。
- 此时,可能需要指定“WebSphere Portal V5.0 测试环境”服务器作为目标服务器。因为您已经具有 WebSphere Portal V5.0 测试环境,所以选择它,并单击“选择服务器”向导中的完成。
- 该文件最终将显示在浏览器中。在此处,您可以看到用户在门户网站站点上会看到的输入字段、链接和布局。
- 在“名称”字段中输入 %,并单击查找按钮来从数据库中检索现有用户。

注意,单击创建链接或者在数据表中选择一个用户将分别打开 UserAdminCreate 或 UserAdminUpdate 页面。如果在这两个页面的任何一个页面中提供值并单击创建或更新按钮,则添加和更新都会被接受。更新后的数据应该立即反映在 UserAdminView 页面中。如果搜索名称与您已创建的用户名相匹配(例如,可以使用通配符 % 来检索所有用户),则当您从创建页面返回时就应该显示新用户。
在进行下一个练习之前,应停止测试环境服务器。要停止测试环境服务器,只需在“服务器”视图中选择它,然后单击停止服务器工具栏按钮
。
现在,您可以开始进行练习 1.5:添加用来搜索“拍卖”站点列表和提供列表详细信息的 portlet 了。