关于使用Java国际化代码时出现等类似问题???i18m.username???的解决方案

今天使用SpringMVC写国际化代码,发现如下问题;
首先我配置了三个国际化代码资源文件

// i18n.properties
i18n.username=username
i18n.password=password

// i18n_en_US.properties
i18n.username=username
i18n.password=password

// i18n_zh_CN.properties
i18n.username=\u7528\u6237\u540D
i18n.password=\u5BC6\u7801

然后配置Spring的配置文件:

	<!-- 配置国际化资源文件 -->
	<bean id="messageSource"
		class="org.springframework.context.support.ResourceBundleMessageSource">
		<property name="basename" value="i18n"></property>	
	</bean>

然后分别放到两个页面使用fmt标签输出,这两个页面分别是:

  1. /SpringMVCTest/WebContent/WEB-INF/views/success.jsp
  2. /SpringMVCTest/WebContent/hello.jsp
    采用如下方式输出:
	<fmt:message key="i18n.username"></fmt:message>
	<fmt:message key="i18n.password"></fmt:message>

结果发现,在两个页面运行结果如下:

// success.jsp
用户名
密码 

// hello.jsp
???i18n.username???
???i18n.password??? 

为什么会出现上述问题呢?

查阅相关资料发现,因为success.jsp在WEB-INF下,不可以直接访问,要通过转发才可以访问到,而转发要经过 Handler 处理类。hello.jsp因为可以直接访问,并没有经过转发,所以无法使用国际化配置。而success.jsp因为使用了转发,转发过程要交给SpringMVC去处理,而SpringMVC的配置文件中配置了ResourceBundleMessageSource,所以可以访问国际化配置。

所以请谨记,

转发后的页面才可以使用国际化配置!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值