» 搜索提示 
 
使用虚拟表单
2006 年 1 月 [修订号:V2-2]  
在本教程中,将使登录页面上的组件与两个虚拟表单相关联。一个虚拟表单处理用于创建新登录帐户的信息,另一个虚拟表单处理有关老用户的信息。通过将表示新用户的组件与一个虚拟表单相关联,以及将表示老用户的组件与另一个虚拟表单相关联,应用程序可以处理任意一组组件,就像这些组件位于它们自己单独的页面上一样。
 
目录
 
关于虚拟表单
打开 Login 示例项目
将组件与虚拟表单相关联
将另一个虚拟表单添加到页面
测试应用程序
执行更多操作:保留和放弃提交的值
将组件与虚拟表单相关联的规则
有关虚拟表单和页面片段的说明
[spacer] 此页上的内容适用于 Sun Java Studio Creator 2
 
本教程中使用的示例
» Login.zip
 

关于虚拟表单

 
通过虚拟表单,您可以限制在提交 Web 页时处理的输入字段。虚拟表单的两个基本元素是其输入组件和提交组件。输入组件(如“文本字段”、“文本区域”、“下拉列表”和“单选按钮”组件)用于参与虚拟表单。提交组件(最常见的是“按钮”或“链接”组件)用于提交虚拟表单。提交虚拟表单时,将处理虚拟表单的参与组件,而忽略页面上的其他组件;从本质上说,就像虚拟表单的参与组件位于它们自己的页面上那样处理它们。一个页面可以包含多个虚拟表单,并且每个虚拟表单都单独地进行处理。
 
本教程提供了在一个页面上创建两个虚拟表单的分步指导。有关虚拟表单的简介,请参见 Sun Java Studio Creator 2 IDE 中的虚拟表单。有关使用虚拟表单的完整样例应用程序(包括将表组件与虚拟表单一起使用),请参见如何使用虚拟表单
 

打开 Login 示例项目

 
在本部分中,将打开一个提供登录页面的示例项目。此项目将被用作创建虚拟表单的起点。
  1. 打开 Login.zip 文件,并将其内容解压缩到 Java Studio Creator 项目目录中。在 Windows 计算机上,此目录通常为 C:\Documents and Settings\<user name>\My Documents\Creator\Projects

  2. 在 Java Studio Creator IDE 中,选择“文件”>“打开项目”,然后打开 Login 项目。

  3. 当 Login 项目出现在“项目”窗口中时,选择“运行”>“运行主项目”(或单击工具栏中的“运行主项目”按钮)以生成并运行项目。

    在浏览器中,您应看到 Chimney Sweep Central 应用程序的欢迎页。

  4. 单击页面左上部的 "Login" 链接。

  5. 在老用户部分(第一部分)中,在 "User Name" 文本字段中输入 admin,并在 "Password" 文本字段中输入 admin

  6. 单击 "Login" 按钮。

    图 1 显示了结果。页面上的所有文本字段将被验证,其中包括新用户帐户部分中的字段。由于这些字段中没有输入值,因此它们将返回错误。但是,您希望应用程序将老用户和新用户分开处理。解决方案是使用虚拟表单,如下一部分所述。

    图 1:没有虚拟表单的登录应用程序
    图 1:没有虚拟表单的登录应用程序
     
 

将组件与虚拟表单相关联

 
通过将表示老用户的组件与一个虚拟表单相关联,以及将表示新用户的组件与另一个虚拟表单相关联,您可以处理任意一组组件中的输入字段,就像这些组件位于它们自己单独的页面上一样。在本部分中,将创建和配置老用户的虚拟表单。
  1. 在 IDE 的“项目”窗口中,展开 "Login" >“Web 页”,然后双击 Login.jsp。

  2. 在 "Login" 页中,右键单击空白处,然后从弹出式菜单中选择“虚拟表单”。

  3. 在“虚拟表单”对话框中单击“新建”。

  4. 在“颜色”字段中双击,然后从下拉列表中选择红色。

  5. 在“名称”字段中双击,键入 returningCustomer,然后按 Enter 键。

    图 2 显示了“虚拟表单”对话框。与 returningCustomer 虚拟表单关联的组件将由红色边框标识。

    图 2:“虚拟表单”对话框
    图 2:“虚拟表单”对话框
     
  6. 单击“确定”应用更改并关闭对话框。

  7. 单击可视设计器工具栏中的“显示虚拟表单”按钮 (“显示虚拟表单”按钮)。

    此操作将打开虚拟表单的显示。在可视设计器中,您将看到一个将颜色与特定虚拟表单匹配的虚拟表单图例。如果一个页面上有多个虚拟表单,则图例非常有用,在下一部分中您将看到这一点。现在,将组件添加到虚拟表单。

  8. 在可视设计器中,按住 Ctrl 键单击老用户部分中的 "User Name" 文本字段、"Password" 文本字段和 "Remember My User Name" 复选框。

  9. 右键单击三个选定组件中的任何一个,然后选择“配置虚拟表单”。

  10. 确保 retUserNameTextField、retPasswordField 和 remUserNameCheckbox 出现在“配置虚拟表单”对话框的顶部,如图 3 所示。然后在“参与”字段中双击,从下拉列表中选择“是”,再单击“确定”。

    现在 "User Name" 字段、"Password" 字段和 "Remember My User Name" 复选框具有红色实线边框,以表明它们参与了 returningCustomer 虚拟表单。这意味着在提交虚拟表单时将处理这些组件。请注意,只有输入组件才适合参与虚拟表单。其他类型的输入组件包括“文本区域”、“下拉列表”和“单选按钮”组件。从技术上讲,输入组件是实现 EditableValueHolder 接口的组件。

    图 3:“配置虚拟表单”对话框
    图 3:“配置虚拟表单”对话框
     
  11. 在可视设计器中,右键单击 "Login" 按钮,然后选择“配置虚拟表单”。

  12. 在“配置虚拟表单”对话框中,确保 loginButton 出现在顶部。然后将“提交”字段设置为“是”,再单击“确定”。

    "Login" 按钮此时具有虚线边框,以表明它提交 returningCustomer 虚拟表单。“按钮”和“链接”组件是最常用的提交组件。这些组件将提交 Web 页,因为它们可以实现 ActionSource 接口。

    图 4 用颜色编码的边框显示了 returningCustomer 虚拟表单的参与组件和提交组件。

    图 4:虚拟表单颜色编码
    图 4:虚拟表单颜色编码
     
 

将另一个虚拟表单添加到页面

 
现在,为新用户部分中的组件创建一个虚拟表单。虚拟表单机制将处理此虚拟表单的参与组件,而忽略页面上的所有其他输入组件(包括与 returningCustomer 虚拟表单关联的输入组件)。这一次将直接在“配置虚拟表单”对话框中创建虚拟表单。
  1. 在页面上单击一下,以便确保在老用户部分中未选定任何组件。

  2. 按住 Ctrl 键选择新用户部分中的 "User Name"、"Password" 和 "Password (Repeat)" 文本字段。

  3. 右键单击三个选定组件中的任何一个,然后选择“配置虚拟表单”。

    确保 newPasswordRepeatField、newUserNameTextField 和 newPasswordField 出现在“配置虚拟表单”对话框的顶部。

  4. 单击“新建”。

    一个新的虚拟表单将被添加到对话框。

  5. 将“颜色”设置为绿色,将“名称”设置为 newUser,将“参与”设置为“是”,然后单击“确定”。

    新虚拟表单的名称和颜色将出现在虚拟表单图例中。这三个组件的边框将变为绿色实线。

  6. 右键单击 "Create New Account" 按钮,然后选择“配置虚拟表单”。

  7. 在 newUser 虚拟表单的条目中,将“提交”设置为“是”,然后单击“确定”。

    按钮的边框将变为绿色虚线。
 

测试应用程序

 
  1. 运行应用程序。

  2. 单击页面左上部的 "Login" 链接。

  3. 在老用户部分中,在 "User Name" 文本字段中输入 admin,在 "Password" 文本字段中输入 admin,然后单击 "Login" 按钮。

    应用程序将使您登录,并打开“欢迎”页。新用户部分中的输入字段未进行验证。

  4. 通过填写新用户帐户的信息再单击 "Create New Account" 按钮,继续测试应用程序。
 

执行更多操作:保留和放弃提交的值

 
缺省情况下,当用户提交一个虚拟表单后又使同一页面重新显示出来时,不参与该虚拟表单的任何输入字段都将保留其提交值。要了解此功能,请尝试以下操作:
  1. 填写三个字段以创建一个新帐户。

    但是,在单击 "Create New Account" 按钮之前,您怀疑可能已经为此应用程序创建了此用户名和口令。

  2. 在不修改新用户部分中各条目的情况下,作为老用户输入相同的用户名和口令,然后单击 "Login" 按钮。

    将出现一条消息,指示无法识别该用户名。将保留新用户部分中的输入字段并显示其条目,因为它们不参与 returningCustomer 虚拟表单。同样,当您单击 "Create New Account" 按钮以提交 newUser 虚拟表单时,也将保留老用户部分中的输入字段并显示其条目,因为它们不参与 newUser 虚拟表单。

    注意:  在某些情况下,您需要覆盖缺省行为并明确地放弃非参与输入字段的提交值。通过在页面 Bean 代码中调用表单组件的方法,可以完成此操作。有关这一技术的详细信息,请参见技术文章如何使用虚拟表单

  3. 要完成帐户的注册,请单击 "Create New Account" 按钮。
 

将组件与虚拟表单相关联的规则

 
下面是将组件与虚拟表单相关联时应该遵循的一些规则:
  • 一个虚拟表单可以有零个或多个参与组件。

  • 一个虚拟表单可以有一个或多个提交组件。

  • 一个输入组件可以参与多个虚拟表单。

  • 一个提交组件只能提交一个虚拟表单。

  • 只有输入组件才适合参与虚拟表单。同样,要使组件适合提交虚拟表单,该组件必须是提交组件。

  • 输入组件既可以参与虚拟表单,也可以提交虚拟表单。要使输入组件提交 Web 页,必须打开组件的“更改时自动提交”功能(通过组件的弹出式菜单可以访问此功能)。既参与虚拟表单又提交虚拟表单的组件,其左侧和顶部边框为实线,右侧和底部边框为虚线。下拉列表是既可以参与又可以提交虚拟表单的最常用输入组件。

  • 与虚拟表单关联的组件可以出现在页面上的任何位置,不需要同位。
 

有关虚拟表单和页面片段的说明

 
在 Java Studio Creator 2 IDE 中,不支持页面片段内的虚拟表单。要配置对页面片段中的组件进行选择性处理,您必须将这些组件的 immediate 属性设置为 True。此解决方案足以适合许多用例;但是,它在一定程度上仍具有局限性,因为它只能配置对一组组件进行选择性处理。
 
另请参见

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