`
whoosh
  • 浏览: 235041 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

JSF入门十三(错误信息处理)

    博客分类:
  • JSF
 
阅读更多

本文参考 http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630

 

在使用标准转换器或验证器时,当发生错误时,会有一些预定义的错误信息显示,这些信息可以使用<h:messages>或<h:message>标签来显示出来,而这些预定义的错误信息也是可以修改的,您所要作的是提供一个信息资源文件,例如:messages.properties

javax.faces.component.UIInput.CONVERSION=Format Error.


javax.faces.component.UIInput.REQUIRED=Please input your data.


....

 javax.faces.component.UIInput.CONVERSION是用来设定当转换器发现错误时显示的信息,而javax.faces.component.UIInput.REQUIRED是在标签设定了required为true,而使用者没有在栏目输入时显示的错误信息。
您要在faces-config.xml中告诉JSF您使用的信息文件名称,例如:

<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
<application>
<local-config>
<default-locale>en</default-locale>
<supported-locale>zh_CN</supported-locale>
</local-config>
<message-bundle>messages</message-bundle>
</application>
.....
</faces-config>

 在这边我们设定了信息文件的名称为messages_xx_YY.properties,其中xx_YY是根据您的Locale来决定,转换器或验证器的错误信息如果有设定的话,就使用设定值,如果没有设定的话,就使用预定义值。

验证器错误信息,除了上面的javax.faces.component.UIInput.REQUIRED之外,还可以搜索javax.faces.validator包找到一些错误信息。

在您提供自定义信息的时候,也可以提供{0}或{1}来设定显示相对的属性值,以提供详细正确的错误提示信息。
信息的显示有概述信息与详述信息,如果是详述信息,则在标识上加上 "_detail",例如:

javax.faces.component.UIInput.CONVERSION=Error.
javax.faces.component.UIInput.CONVERSION_detail= Detail Error.
....

 除了在信息资源文件中提供信息,您也可以在程序中使用FacesMessage来提供信息,例如在 自定义验证器 中我们就这么用过:

....
if(password.length() < 6) {
FacesMessage message = new FacesMessage(
FacesMessage.SEVERITY_ERROR,
"字符长度小于6",
"字符长度不得小于6");
throw new ValidatorException(message);
}
....

 最好的方法是在信息资源文件中提供信息 ,这么一来如果我们要修改信息,就只要修改信息资源文件的内容,而不用修改程序,来看一个简单的例子,假设我们的信息资源文件中有以下的内容:

bruce.zhao.message1=This is message1.
bruce.zhao.message2=This is message2 with \{0} and \{1}.

 则我们可以在程序中取得信息资源文件的内容,例如:

package bruce.zhao;
import java.util.Locale;
import java.util.ResourceBundle;
import javax.faces.context.FacesContext;
improt javax.faces.component.UIComponent;
import javax.faces.application.Application;
import javax.faces.application.FacesMessage;
....
public void xxxMethod(FacesContext context,
UIComponent component,
Object obj) {
// 取得应用程序代表对象
Application application = context.getApplication();
// 取得信息文件主名称
String messageFileName =
application.getMessageBundle();
// 取得当前 Locale 对象
Locale locale = context.getViewRoot().getLocale();
// 取得信息绑定 ResourceBundle 对象
ResourceBundle rsBundle =ResourceBundle.getBundle(messageFileName, locale);
String message = rsBundle.getString("bruce.zhao.message1");
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_FATAL, message, message);
....
}
....
....

 接下来您可以将FacesMessage对象填入ValidatorException或ConverterException后再丢出,FacesMessage建构时所使用的三个参数是严重程度、概述信息与详述信息,严重程度有SEVERITY_FATAL、SEVERITY_ERROR、SEVERITY_WARN与SEVERITY_INFO四种。

如果需要在信息资源文件中设定{0}、{1}等参数,则可以如下:

....
String message = rsBundle.getString("bruce.zhao.message2");
Object[] params = {"param1", "param2"};
message = java.text.MessageFormat.format(message, params);
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_FATAL, message, message);

 如此一来,在显示信息时,bruce.zhao.message2的{0}与{1}的位置就会被"param1"与"param2"所取代。

分享到:
评论

相关推荐

    清晰版--JSF入门.pdf

    **3.5 错误信息处理** 当数据验证失败时,JSF会自动显示错误信息。开发者可以通过配置文件或代码来自定义错误消息。 **3.6 自定义转换, 验证标签** 除了自定义转换器和验证器之外,还可以定义自定义标签来增强JSF...

    《JSF入门》简体中文版.pdf

    错误信息处理也是JSF的一部分,可以在数据转换或验证失败时提供反馈。 5. 事件处理 JSF支持多种类型的事件,包括动作事件(Action Events)、即时事件(Immediate Events)、值变事件(Value Change Events)和...

    《JSF入门》简体中文版修正版(含页面间导航)

    在"错误讯息处理.htm"中,你会学到如何有效地处理和展示应用程序运行时出现的错误或警告信息,以提供良好的用户体验。 7. **组件标签** "组件卷标.htm"讨论了如何为JSF组件添加和管理标签,这些标签不仅有助于...

    JSF 入门教程(结合Eclipse开发)

    **JSF(JavaServer Faces)入门教程:结合Eclipse开发** JSF,全称为JavaServer Faces,是Java平台上的一种用于构建Web应用程序的UI框架。它为开发者提供了组件化、事件驱动的模型,使得构建用户界面变得更为简单。...

    《JSF入门》简体中文版

    本篇文章将深入探讨JSF的核心概念、主要组件以及如何使用《JSF入门》简体中文版作为学习资源来提升你的JSF技能。 首先,JSF采用MVC(Model-View-Controller)设计模式,使得开发者可以清晰地分离业务逻辑、视图和...

    JSF入门教程

    **3.5 错误信息处理** 当验证失败时,JSF会自动显示默认的错误信息。但是,开发者可以定制这些错误消息,使其更具可读性。 **3.6 自定义转换, 验证标签** 除了标准的转换器和验证器外,还可以创建自定义的标签来...

    《JSF入门 - 简体中文版》.pdf

    ##### 3.5 错误信息处理 在数据验证失败时,JSF会自动显示默认的错误信息。但是,为了提高用户体验,开发者通常会自定义错误消息,使其更具描述性和友好性。 ##### 3.6 自定义转换, 验证标签 除了使用自定义的...

    jsf入门

    通过本JSF入门教程,你将对JSF有全面的理解,并能够开始创建自己的JSF Web应用程序。实践中,你可以参考"jsffirst"这个文件,它可能是包含示例代码、项目结构或练习题,进一步加深理解和应用。记得动手实践是学习...

    JSF教程入门

    - **3.5 错误信息处理**:讨论如何管理和显示验证失败时的错误信息。 - **3.6 自定义转换、验证标签**:学习如何创建自定义的转换器和验证器标签以增强灵活性和重用性。 #### 六、事件处理 - **4.1 动作事件**:...

    JSF入门实例-用户登录

    这个JSF入门实例为我们提供了一个基础的用户登录流程,展示了JSF的组件使用、Managed Bean处理、消息显示和输入验证等功能。通过学习和实践这个例子,可以加深对JSF框架的理解,并为更复杂的Web应用程序开发打下基础...

    精美的JSF入门文档 带示例

    这份"精美的JSF入门文档带示例"可能是由一位国外的专家编写的,旨在帮助初学者快速理解并掌握JSF的核心概念和实际应用。 **JSF的工作原理**: JSF应用基于组件模型,将UI元素(如按钮、文本框)表示为可重用的组件...

Global site tag (gtag.js) - Google Analytics