`
zhanghong
  • 浏览: 90683 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JSF2中实现国际化

阅读更多

每一个MVC框架都实现了国际化功能,使用这些国际化功能都差不多,在JSF2中实现国际化也非常的简单

1.定义一个ManagedBean来管理语言,并添加一个语言修改的监听方法,在语言修改的时候触发。

2.在faces-config中配置这个语言Bean。

3.在页面添加相应的HTML组件以及添加监听器。

 

LanguageBean:

 

public class LanguageBean {

	private static final long serialVersionUID = 1L;

	private static String localeCode;

	private static Map<String, Object> countries;
	static {
		countries = new LinkedHashMap<String, Object>();
		countries.put(ContextUtil.getI18NMessage(FacesContext.getCurrentInstance(), "#{msg.english}"), Locale.ENGLISH); // label, value
		countries.put(ContextUtil.getI18NMessage(FacesContext.getCurrentInstance(), "#{msg.chinese}"), Locale.SIMPLIFIED_CHINESE);
	}

	public Map<String, Object> getCountriesInMap() {
		return countries;
	}

	public String getLocaleCode() {
		return localeCode;
	}

	public void setLocaleCode(String localeCode) {
		this.localeCode = localeCode;
	}

	// value change event listener
	public void countryLocaleCodeChanged(ValueChangeEvent e) {

		
		String newLocaleValue = e.getNewValue().toString();

		// loop country map to compare the locale code
		for (Map.Entry<String, Object> entry : countries.entrySet()) {

			if (entry.getValue().toString().equals(newLocaleValue)) {

				FacesContext.getCurrentInstance().getViewRoot()
						.setLocale((Locale) entry.getValue());
				countries = new LinkedHashMap<String, Object>();
				countries.put(ContextUtil.getI18NMessage(FacesContext.getCurrentInstance(), "#{msg.english}"), Locale.ENGLISH); // label, value
				countries.put(ContextUtil.getI18NMessage(FacesContext.getCurrentInstance(), "#{msg.chinese}"), Locale.SIMPLIFIED_CHINESE);

			}
		}
	}
}

 

faces-config.xml中的配置:

 

<managed-bean>

<managed-bean-name>language</managed-bean-name>

<managed-bean-class>com.bond.bean.LanguageBean</managed-bean-class>

<managed-bean-scope>session</managed-bean-scope>

</managed-bean>

 

        <application>

<locale-config>

<default-locale>en</default-locale>

</locale-config>

<resource-bundle>

<base-name>bean.properties.bean</base-name>

<var>msg</var>

</resource-bundle>

</application>

 

这里的scope为Session

 

页面上的组件:

 

          <h:outputLabel value="#{msg.language}"></h:outputLabel>

<h:selectOneMenu value="#{language.localeCode}" onchange="submit();"

valueChangeListener="#{language.countryLocaleCodeChanged}">

<f:selectItems value="#{language.countriesInMap}" />

          </h:selectOneMenu>

这样,简单的国际化就实现了。

 

分享到:
评论

相关推荐

    jsf实现多语言国际化demo

    jsf实现多语言国际化demo

    jsf1.2+spring3.0+hibernate3.3例子-单表增删改查

    使用jsf1.2+spring3.0+hibernate3.3实现集成,利用annotation实现自动对象管理注入,用户表的登录增删改查操作,包括验证码ajax集成,消息机制,国际化处理,自定义转换器,自定义验证器等 qq:38732796 欢迎讨论

    jsf常用文档datatable行样式,frameset及树型目录dtree,jsf滚动组件

    datatable行样式 frameset及树型目录dtree jsf滚动组件 jsf实现排序功能 jsf datetable行编辑的实现 jsf事件 jsf国际化 jsf验证与消息

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    3.2 JSF的国际化支持 132 3.2.1 加载国际化资源文件 132 3.2.2 使用国际化消息 134 3.2.3 动态数据国际化 137 3.2.4 让用户选择语言 142 3.3 使用转换器完成类型转换 143 3.3.1 转换器概述、用途 144 3.3.2 JSF内建...

    Hibernate实战(第2版 中文高清版)

    第一部分 从Hibernate和EJB 3.0开始 ... 17.4.3 用Seam实现国际化   17.5 利用Seam简化持久化   17.5.1 实现对话   17.5.2 让Seam管理持久化上下文   17.6 小结  附录A SQL基础知识  附录B 映射快速参考

    JAVA WEB典型模块与项目实战大全

    第22章 用户登录模块(struts 2.x+guice+国际化)  22.1 用户登录概述  22.2 关于用户登录的基础知识——国际化资源  22.3 关于用户登录的基础知识——guice框架  22.4 用户登录的具体实现  22.5 小结  ...

    JAVA程序开发大全---上半部分

    12.2.5 Struts 2.0中的国际化编程 221 12.2.6 创建基于POJO的Action 223 12.3 Spring整合Struts 2.0框架 224 12.4 Struts 2.0应用实例:登录系统 227 12.5 本章小结 231 第13章 JPA的开发与应用 232 13.1 JPA规范...

    Spring攻略(第二版 中文高清版).part2

    11.7 国际化(I18n)信息属性 458 11.7.1 问题 458 11.7.2 解决方案 458 11.7.3 工作原理 458 11.8 改变永久性存储系统 461 11.8.1 问题 461 11.8.2 解决方案 461 11.4.3 工作原理 461 11.9 日志 ...

    Spring中文帮助文档

    3.8.2. 利用MessageSource实现国际化 3.8.3. 事件 3.8.4. 底层资源的访问 3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ...

    Java Server Faces编程

    高级主题包括编写定制GUI组件、扩展输入验证器、提供国际化支持,以及开发一个切实可行的网上商店应用程序等。 作者简介:Budi Kurniawan是一位专长于Internet编程和面向对象编程的IT顾问,拥有丰富的Java和...

    real-estate-market:JPA,EJB,JSF,i18n,Sass,Ajax

    i18n –完全国际化的项目(包括从托管bean添加到Context的消息); Sass(Scout用于运行.scss文件); AJAX(通过PrimeFaces功能广泛使用); jQuery(略有使用)。 该项目使用的工具:Eclipse,GlassFish,Git...

    Spring攻略(第二版 中文高清版).part1

    11.7 国际化(I18n)信息属性 458 11.7.1 问题 458 11.7.2 解决方案 458 11.7.3 工作原理 458 11.8 改变永久性存储系统 461 11.8.1 问题 461 11.8.2 解决方案 461 11.4.3 工作原理 461 11.9 日志 ...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.3. Seam 中的可点击列表:消息示例............................................................................................................................. 27 1.3.1. 理解代码.........................

    Spring API

    3.8.2. 利用MessageSource实现国际化 3.8.3. 事件 3.8.4. 底层资源的访问 3.8.5. ApplicationContext在WEB应用中的实例化 3.9. 粘合代码和可怕的singleton 3.10. 以J2EE RAR文件的形式部署Spring ...

    zxing.java源码解析-MaterialsJava-1:材料Java-1

    集成、国际化支持和用于 GUI 的小部件。 - 清晰、简洁、模块化和嵌入式。 - 持续集成服务器仍在积极开发中。 - 行为接口规范语言,可用于指定代码模块的行为。 它结合了 Eiffel 的契约式设计方法和 Larch 系列接口...

    spring4.1核心包

    包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类。 19. spring-webmvc-portlet-4.1.1.RELEASE....

    spring4.3.9相关jar包

    包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、XSLT相关类。包括框架的Servlets,Web MVC框架,控制器和视图支持。当然,如果你的应用使用了独立的MVC 框架,则无需这个JAR 文件...

    dataglue-开源

    使用 JDO 的 Java 开源 UI 组件数据绑定框架。 链接的组件是表单、树和表,实现是用于 Echo Web 框架、Swing 和 JSF。 还提供验证支持、国际化等

    Java经典入门教程pdf完整版

    化,也包括电子政务等,领域涉及:办公自动化OA,客户关系管理CRM,人力资源HR, 企业资源计划ERP、知识管理KM、供应链管理SCM、企业设备管理系统EAM、产品生命 周期管理PLM、面向服务体系架构SOA、商业智能BⅠ、项日管理...

Global site tag (gtag.js) - Google Analytics