1.在java的src下建立message.properties,内容如下:
globleTitleText = JSF Demo indexInputTip = Please input your name and password: indexNameTip = Name: indexPasswordTip = Password: indexCommandText = Submit chooseLanguageTip = Please Choose Your Language:
这个是默认的资源文件,即JSF会根据浏览器送来的Accept-Language header中的内容来决定该使用哪一个资源档名称,例如:
Accept-Language: zh_cn, en-US, en
如果浏览器送来这些header,则预设会使用繁体中文,接着是美式英文,再来是英文语系,如果找不到对应的讯息资源文件,则会使用预设的讯息资源文件。
再来个中文的资源文件message_zh.properties,通过jdk的native2ascii程序转换,转换后大致如下 :
globleTitleText = JSF2.0\u793a\u4f8b indexInputTip = \u8bf7\u8f93\u5165\u7528\u6237\u540d\u548c\u5bc6\u7801 indexNameTip = \u7528\u6237\u540d indexPasswordTip = \u5bc6\u7801 indexCommandText = \u63d0\u4ea4 chooseLanguageTip =\u8bf7\u9009\u62e9\u60a8\u7684\u8bed\u8a00
2.接下来使用<f:loadBundle/>标签来加载资源文件,改造后的页面大致如下:
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@page contentType="text/html;charset=gb18030"%> <f:view locale="#{user.local }"> <html> <head> <title><h:outputText value="#{msgs.globleTitleText}"/></title> </head> <body> <f:loadBundle var="msgs" basename="message"/> <h:outputText value="#{user.local }"/><br> <h:form> <h:outputText value="#{msgs.chooseLanguageTip }"/> <h:selectOneMenu value="#{user.local }" style="width:120px;" onchange="submit()"> <f:selectItems value="#{user.languageItems}"/> <f:valueChangeListener type="onlyfun.caterpillar.UserBean"/> </h:selectOneMenu> </h:form> <h:form> <h3><h:outputText value="#{msgs.indexInputTip }"/></h3> <h:outputText value="#{user.errMsg}"></h:outputText><br> <h:outputText value="#{msgs.indexNameTip }"></h:outputText><h:inputText value="#{user.name}"/><br> <h:outputText value="#{msgs.indexPasswordTip }"/><h:inputSecret value="#{user.password }"></h:inputSecret><br> <h:commandButton value="#{msgs.indexCommandText}" action="#{user.verify }"/> </h:form> </body> </html> </f:view>
注:这个在页面上加了一个选择语言的下拉列表。
4.UserBean.java,实现了ValueChangeListener接口的processValueChange(ValueChangeEvent vce)方法,当下拉列表的值改变时调用这个方法。
package com.jsf.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.faces.event.ValueChangeEvent; import javax.faces.event.ValueChangeListener; import javax.faces.model.SelectItem; import javax.swing.JOptionPane; public class UserBean implements ValueChangeListener{ private String name; private String password; private String errMsg; private String local; private List<SelectItem> languageItems= new ArrayList<SelectItem>(); public List<SelectItem> getLanguageItems() { return this.languageItems; } public void setLanguageItems(List<SelectItem> languageItems) { this.languageItems = languageItems; } public String getLocal() { return this.local; } public void setLocal(String local) { this.local = local; } public UserBean() { languageItems.add(new SelectItem("","请选择您的语言")); languageItems.add(new SelectItem("en","English")); languageItems.add(new SelectItem("zh","Chinese")); } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } public String getErrMsg() { return this.errMsg; } public void setErrMsg(String errMsg) { this.errMsg = errMsg; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } /** *校验用户名和密码的方法。 */ public String verify() { System.out.println("name:" + name + ",password:" + password); if (name.equals("admin") && password.equals("123456")) { return "success"; } else { errMsg = "用户名或密码错误!"; return "failure"; } } // valueChangeListener事件接收的方法必须是public,void,并且有ValueChangeListener参数。r public void processValueChange(ValueChangeEvent vce) { System.out.println("set user language..."); JOptionPane.showMessageDialog(null, "您选择的语言:" + vce.getNewValue()); } }
5.好了,看下效果:
默认情况:
选择语言为英语:
这里给了一个提示,单击确定,就可以看到效果了。
相关推荐
在这个“JSF国际化范例”中,我们重点探讨如何在JSF应用中实现多语言支持,即国际化(i18n)。这是一项关键功能,因为它允许应用程序为不同地区的用户提供本地化的体验。 国际化通常涉及以下几个核心概念: 1. **...
一个例子:jsf国际化
在JavaScriptServer Faces (JSF) 2.x版本中,实现国际化是一项重要的功能,它使得应用程序能够根据用户所在的地区提供相应的语言支持。这篇文章将探讨如何在JSF 2中实现国际化,以便为全球用户提供更好的用户体验。 ...
在JavaScript Server Faces (JSF) 中,实现多语言国际化是一项重要的功能,它允许应用程序为不同地区的用户提供本地化的体验。JSF 提供了内置的支持来处理国际化,使得开发者能够轻松地根据用户的选择或浏览器设置来...
2. `[A101]JSF国际化.wrf`:这个文件的扩展名".wrf"不常见,但考虑到上下文,它可能是一个Web资源文件或者是一个录制的演示文件,展示了如何在JSF中实现国际化功能。在JSF中,国际化通常涉及到使用资源包(Resource ...
* JSF国际化和校验:JSF支持国际化和校验,能够适应不同语言和文化环境。 三、JSF与其他技术的关系 * JSF与HTTP、Servlet、Portlet、JavaBean、JSP的关系:JSF基于这些技术之上,提供了一个更高级的抽象层,使得...
"JSF国际化"则关注如何使应用支持多语言。这部分会教授如何创建资源bundle文件,定义不同语言的文本,以及在JSF组件中使用这些资源来实现动态的国际化内容显示。 "JSF验证器"部分会介绍JSF内置的验证机制,如长度、...
7. **JSF国际化**:JSF提供了`<f:resources>`和`<f:loadBundle>`标签来支持多语言。通过定义资源文件,开发者可以轻松地为不同地区提供本地化内容。 8. **JSF验证与消息**:JSF内置了强大的验证机制,通过`...
国际化(i18n)和全球化(g11n)是软件开发中的关键概念,尤其在现代多语言互联网环境中。JSF提供了支持这两种功能的机制,使得开发者能够轻松地为不同地区的用户提供定制的用户体验。 1. **JSF框架概述** JSF是一...
在JSF(JavaServer Faces)1.2版本中,实现国际化是一项重要的功能,它使得应用程序能够根据用户所在的地区提供相应的语言环境。以下是对这个主题的详细讲解。 首先,我们需要了解JSF的基本概念。JSF是一种用于构建...
当我们谈论"ADF(JSF)框架中使用国际化"时,我们指的是如何使应用程序能够支持多种语言,以便全球用户都能方便地使用。 在ADF和JSF中实现国际化通常涉及到以下几个关键步骤和知识点: 1. **资源bundle**:国际化...
国际化与本地化 JSF 1.2支持资源包,允许开发者为不同地区和语言提供本地化的消息和标签。通过`<f:loadBundle>`标签,可以加载相应的资源文件。 ### 10. 整合其他技术 JSF 1.2能够很好地与其他Java EE技术(如...
在本章节中,我们将深入探讨JavaServer Faces (JSF) 中的托管Bean(Managed Beans)以及如何实现国际化(Internationalization,通常简写为i18n)。这些是JSF框架中的核心概念,对于构建功能丰富的、多语言支持的Web...
JSF框架通过使用资源包和特定的国际化标签,允许开发者轻松地为不同地区的用户提供本地化的内容。 8. JSFExpressionLanguage JSF表达式语言(EL)提供了一种表达式语法,用于访问和操作数据。EL简化了对 Managed ...
`jstl.jar`和`javax.servlet.jsp.jstl.jar`提供了JSTL库,包含了一系列用于处理常见任务的标签,如条件判断、迭代、国际化等,与JSF结合使用可以增强视图的可读性和维护性。 9. **其他辅助库**: 为了支持一些...
标签:“jsf2 国际化 jpa 标签”这组标签概括了文档的主要内容和关键词,JSF2是文档的核心主题,国际化和JPA分别指明了项目的多语言支持和数据持久化的需求,而“标签”则涉及到在JSF项目中使用的各种标签库。...
此外,JSF支持国际化,可以为不同地区的用户提供本地化的应用程序。 在数据处理方面,JSF内置了标准转换器和验证器,这些转换器和验证器能够自动处理数据类型转换和输入验证,开发者也可以实现自定义转换器和验证器...
综上所述,JSF在MyEclipse中的开发流程涵盖了环境配置、项目创建、JSF功能添加以及国际化资源的管理。MyEclipse作为强大的开发工具,极大地简化了JSF应用的开发过程,使得开发者可以更加专注于业务逻辑和用户界面的...
这个JAR文件包含Java Standard Tag Library(JSTL)1.2版本,它是一个用于JSP页面的标准标签库,提供了处理SQL查询、XML处理、国际化、条件逻辑等功能。JSTL与JSF结合使用,可以增强JSF应用的表达能力,使得开发者...