» 搜索提示
 
使用验证器
2006 年 4 月 [修订号:V2-4]  
本教程使用 Sun Java Studio Creator 应用程序开发环境 (IDE) 创建一个将摄氏温度转换为华氏温度的应用程序。该应用程序使用验证器检查数据是否在指定范围内,并通过消息组件报告验证错误。
 
目录
 
验证器的概念
设计应用程序
要求输入值
使用双精度范围验证器
添加代码
测试应用程序
使用验证器执行更多操作
[spacer] 此页上的内容适用于 Sun Java Studio Creator 2
 

验证器的概念

 
应用程序收集用户输入的信息(例如登录名和口令)时,验证用户数据是很重要的内容。IDE 提供了一组组件来验证用户输入。可以从组件面板的“验证器”类别下获得的验证器如下所示:
  • 双精度范围验证器。检查组件的本地值是否在某个范围内。该值必须是浮点型或可转换为浮点型。

  • 长度验证器。检查组件的本地值的长度是否在某个范围内。该值必须是 java.lang.String

  • 长型范围验证器。检查组件的本地值是否在某个范围内。该值必须为任何数值类型或可以转换为长整型的字符串。
可以在一个输入组件上使用多个验证器,以便对不同的条件进行验证。当使用验证器时,该组件还需要一个消息组件,在验证失败时向用户说明。
 
有关验证过程的详细信息,请参见 J2EE 1.4 教程的题为验证模型部分。
 

设计应用程序

 
  1. 创建一个新的 Web 应用程序项目,并将其命名为 SimpleValidationExample

    图 1 显示了将在以下步骤中创建的页。

    图 1:页面设计
    图 1:页面设计
     
  2. 从组件面板的“基本”类别中,将“文本字段”组件拖放到页面上。将 label 属性设置为 Celsius,并将 text 属性设置为 0.0

    labeltext 属性位于“属性”窗口中“外观”类别的下方。text 属性值是在运行时显示的缺省值。

  3. 将一个“标签”组件放置在页面上。将标签的 text 属性设置为 Fahrenheit

  4. 将一个“静态文本”组件放在 Fahrenheit 标签的右侧。将 text 属性设置为 32.0
 

要求输入值

 
最简单的验证可确保输入字段中具有某种值。对于此应用程序,需要在提交页之前检查“文本字段”组件是否至少包含了一个字符。还需要一个消息组件在验证失败时向用户说明。
  1. 选择“文本字段”组件,在“属性”窗口中选中 required 属性的复选框,将其属性设置为 True。

    required 属性位于“属性”窗口中“数据”类别的下方。值为 True 表示要求用户在输入字段中输入一个值。如果用户尝试在没有输入值的情况下提交页面,将返回标准验证错误消息。一个红色星号会出现在 Celsius 标签的旁边,表明已设置了 required 属性。

  2. 从组件面板的“基本”类别中,将“消息”组件拖动到页面上,并将其放在“文本字段”组件的右侧。

  3. 按住 Ctrl+Shift 组合键,从“消息”组件拖动一条连线到“文本字段”组件。

    “消息”组件的文本将变为 textField1 的消息摘要,如图 2 所示。

    图 2:消息摘要
    图 2:消息摘要
     
 

使用双精度范围验证器

 
双精度范围验证器用于测试输入组件的值是否在指定范围内。数据类型必须是浮点型或者可转换为浮点型。如果验证失败,则在上面部分添加的消息组件会向用户说明失败。
  1. 如有必要,请打开组件面板的“验证器”类别。将“双精度范围验证器”从组件面板拖放到“文本字段”组件上。

    双精度范围验证器是非可视组件。缺省值 doubleRangeValidator1 出现在“概要”窗口中和“属性”窗口的 validator 属性中,如图 3 所示。


    图 3:“概要”窗口和“属性”窗口 图 3:“概要”窗口和“属性”窗口
    图 3:“概要”窗口和“属性”窗口
     
  2. 在“概要”窗口中,选中 "doubleRangeValidator1"。

  3. 在“属性”窗口中设置验证器的范围:

    • maximum 属性设置为 1000.0
    • minimum 属性设置为 -273.15

  4. 如有必要,打开组件面板的“转换器”类别。将“双精度转换器”从组件面板拖放到“文本字段”组件上。

    此转换器会指定文本字段组件返回的是双精度对象而不是字符串。缺省值 doubleConverter1 出现在“属性”窗口和“概要”窗口中。
 

添加代码

 
  1. 双击“文本字段”组件,在 Java 编辑器中打开其源代码。

  2. 将下面以粗体显示的代码添加到 textField1_processValueChange 操作方法中。

    代码样例 1:值更改事件处理程序方法
    public void textField1_processValueChange(ValueChangeEvent event) {
       double celsiusTemp = ((Double) textField1.getValue()).doubleValue();
       double fahrenheitTemp = 9.0 * celsiusTemp / 5.0 + 32.0;
       staticText1.setValue(new Double(fahrenheitTemp));
    }
     

测试应用程序

 
  1. 运行应用程序。

  2. 从文本字段中删除 0.0,而不输入值,然后按 Enter 键。检查是否显示文本字段的验证错误,如图 4 所示。

    图 4:要求输入时的验证错误
    图 4:要求输入时的验证错误
     
  3. 输入不同的数值以测试应用程序。图 5 显示了输入 100 时的结果。

    图 5:成功验证
    图 5:成功验证
     
  4. 检查输入的值超出范围时是否显示验证错误,以及输入字符串值时是否显示转换错误。图 6 显示了输入 -1000 时的结果。请注意,出现验证错误或转换错误时,不会调用值更改侦听程序方法,并且静态文本组件中的值不会更改。

    图 6:值超出范围时的验证错误
    图 6:值超出范围时的验证错误
     

使用验证器执行更多操作

 
试试看。尝试使用长型范围验证器和长度验证器执行操作。
 
另请参见
 
更多的开发者资源
 
有关为开发者提供的更多教程、文章、提示和专家建议,请访问 Sun Developer Network (SDN) 上的 Java Studio Creator 开发者资源
 

 
此页的最新修改时间:2006 年 4 月 6 日