| 在本教程中,您将使用 Sun Java Studio Creator 集成开发环境 (integrated development environment, IDE) 来创建并显示特定于组件的消息以及全局消息。 |
|
目录
|
![[spacer]](/im/a.gif) |
 |
消息组件的概念
消息组件是一种在页面处理过程中用来通知用户出现错误的主要方式。在 IDE 组件面板的“基本”类别中,包含有两个消息组件:
- 消息。显示与特定组件关联的消息。可能会产生错误消息的组件(如与验证器或转换器关联的输入组件)需要具有消息组件。
- 消息组。显示页面级别的消息或全局消息。可以使用消息组组件帮助您在开发页面时进行调试。
本教程将指导您完成在页面上创建并显示消息的过程。
设计应用程序
- 创建新的 Web 应用程序项目,并将其命名为 MessageExample。
图 1 显示了将在以下步骤中创建的页。
图 1:页面设计 |
- 将组件面板“基本”类别中的“文本字段”组件拖放到页面上。将其
label 属性设置为 Name:,并将 required 属性设置为 True。
label 属性位于“属性”窗口中“外观”类别的下方,required 属性位于“数据”类别的下方。对于 required 属性,请选中复选框以将值设置为 True。此设置要求用户输入字段的值,并确保通过验证器来运行该值。如果用户在未输入值的情况下尝试提交页面,则会返回标准的验证错误消息。
- 在页面上再放置一个“文本字段”组件。将其
label 属性设置为 Number ID:,并将 required 属性设置为 True。
- 将一个“按钮”组件放置在页面上。将按钮的 text 属性设置为
Submit。
添加验证器和转换器
- 向下滚动到组件面板的“验证器”类别。将“长型范围验证器”从组件面板拖放到 "Number ID" 文本字段上。
缺省值 longRangeValidator1 会出现在“概要”窗口中和“属性”窗口的 validator 属性中。如果组件的值超出了为验证器指定的范围,则组件将返回错误。
- 在“概要”窗口中选择 "longRangeValidator1"。
- 在“属性”窗口中对验证器进行以下更改。
- 将
maximum 属性设置为 999
- 将
minimum 属性设置为 0
- 向下滚动到组件面板的“转换器”类别。将“整数转换器”从组件面板拖放到 "Number ID" 文本字段上。
此转换器可以将字符串转换为整数值。缺省值 integerConverter1 会出现在“概要”窗口中和“属性”窗口的 converter 属性中。
将消息附加到组件
具有关联的验证器或转换器的输入组件很可能会产生错误。应用程序中的每个文本字段都需要单独的消息组件。您可以将消息组件链接到特定的组件,方法是将消息的 for 属性设置为该组件的 ID。
- 将一个“消息”组件从组件面板的“基本”类别拖放到 "Name" 文本字段的右侧。
- 按住 Ctrl+Shift 组合键,从“消息”组件拖动一条直线到 "Name" 文本字段。
“消息”组件的文本便会更改为 textField1 的消息摘要。如果文本字段中存在错误,则消息组件将在页面上呈现消息。否则,消息组件不可见。
- 将另一个“消息”组件从组件面板的“基本”类别拖放到 "Number ID" 文本字段的右侧。
- 按住 Ctrl+Shift 组合键,从“消息”组件拖动一条直线到“文本字段”组件。
图 2 显示了页面的外观。
图 2:显示消息组件的页面 |
添加全局消息
现在,您将添加页面处理成功完成后显示的全局消息。
- 将一个“消息组”组件从组件面板的“基本”类别拖放到 "Submit" 按钮的下方。
- 在“属性”窗口中,将
showGlobalOnly 属性设置为 True。此属性指示组件将显示全局消息。
图 3 显示了包含消息组组件的页面。
图 3:包含消息组的页面 |
- 双击 "Submit" 按钮,在 Java 编辑器中打开其源代码。
- 在
button1_action 方法中输入以下代码。
| 代码样例 1:按钮组件的操作方法 |
public String button1_action(){
// display message if processing completes successfully
info("Welcome");
return null;
} |
测试应用程序
- 运行应用程序。
- 在运行的应用程序中,在不输入任何值的情况下单击 "Submit"。
该项目会因为这两个输入字段而生成验证错误,如图 4 所示。此错误是由于这两个字段的 required 属性的值为 True 而导致的。
图 4:验证错误 |
- 在这两个字段中键入
bob,然后单击 "Submit"。
由于第二个输入字段需要一个介于 0 到 999 之间的整数,因此其关联的转换器抛出了转换错误,如图 5 所示。第一个输入字段仅需要非空值,所以它不显示错误消息。
图 5:转换错误 |
- 在第一个输入字段中输入
bob,在第二个输入字段中输入 1000,然后单击 "Submit"。
由于第二个值转换后的整数不在范围内,长型范围验证器将抛出验证错误。此错误与上一步骤中的转换错误显示在同一消息组件中。
图 6:其他验证错误 |
- 在第一个输入字段中输入
bob,在第二个输入字段中输入 50,然后单击 "Submit"。
两个输入字段中的值都可以接受,因此两个组件消息都为空。
页面处理正常完成,消息组组件显示 "Welcome" 消息。
图 7:没有错误的 Web 页 |
执行更多操作
本教程介绍了如何使用 info 方法将文本写入消息组组件。您还可以使用 warn、error 和 fatal 方法。每个方法分别使用不同的样式设置 -- MsgGrpInfo、MsgGrpWarn、MsgGrpError 和 MsgGrpFatal。
试试看。编辑 button1_action 方法,将调用添加到 warn、error 和 fatal 方法。运行程序,查看应用程序应用于各种消息的不同样式。
要将摘要消息和详细信息消息同时写入消息组组件,请使用类似如下语句的代码。第一个参数是摘要消息,第二个参数是详细信息消息。
FacesContext.getCurrentInstance().addMessage(
null, new FacesMessage("Summary Message", "Detail Message"));
|
试试看。从代码样例复制代码,并将其添加到 button1_action 方法。不要忘记从弹出式菜单中选择“修复导入”,以便为 FacesContext 类添加 import 语句。选中消息组组件的 showDetail 复选框,然后运行程序。此 FacesMessage 构造函数将严重性级别设置为 INFO。如果需要其他的严重性级别,请使用 FacesMessage(severity, summary, detail) 构造函数。尝试将此构造函数与以下严重性级别参数结合使用:FacesMessage.SEVERITY_INFO、FacesMessage.SEVERITY_WARN、FacesMessage.SEVERITY_ERROR 和 FacesMessage.SEVERITY_FATAL。
另请参见:
此页的最新修改时间:2006 年 2 月 10 日
|