JSTL I18N 格式标签库 使用之二_____读取消息资源

同样推荐一篇写的很详细的博客  http://blog.sina.com.cn/s/blog_4f925fc30101820u.html

读取消息资源主要有4个标签,在这里进行一下小总结:

<fmt:buddle> <fmt:setBuddle> <fmt:message> <fmt:param> 四个标签之间的嵌套关系大概是这个样子:

复制代码
1 <fmt:buddle basename="name">
2 <fmt:message key="key">
3 <fmt:param value="value">
4 </fmt:param>
5 </fmt:message>
6 </fmt:buddle>
7
8 <fmt:setBuddle basename="name"/>
9 <fmt:message key="key">
复制代码

第1~6行是一种方式   第8~9行是一种方式。

下面进行详细说明。ps:读取的资源文件就是 *.properties 文件。

1. <fmt:bundle>标签

该标签主要用于将资源文件绑定于它的标签体中的显示。就如上面的第一种方式。

【语法】:

<fmt:bundle basename=”name”[prefix=”prefix”]>

  …标签主题

</fmt:bundle>

2. <fmt:setBundle>标签

该标签主要用于绑定资源文件或者把资源文件保存在指定的JSP范围内。

【语法】:

<fmt:setBundle basename=”name” [var=”name”]

                                                  [scope=”page|request|session|application”]

/> 

3.  <fmt:message>标签

该标签主要负责读取本地资源文件,从指定的消息文本资源文件中读取键值,并且可以将键值保存在指定的JSP范围内。

【语法1】:

<fmt:message key=”keyName”[bundle=”bundle”]

                                     [var=" "]

                                    [scope=”page|request|session|application”]

/>

【语法2】:

<fmt:message key=”keyName”[bundle=”bundle”]

                                                 [var=" "]

                                                 [scope=”page|request|session|application”]> 

  <fmt:param/>

</fmt:message>

提示:建议此处的bundle使用EL表达式,因为属性bundle的类型为LocalizationContext,而不是一个String类型的URL

4. <fmt:param>标签

该标签主要用于当<fmt:message>中资源文件中获得键值时,动态的为资源文件中的变量赋值。

 

【语法1】:

 

<fmt:param value=”value”/>

 

【语法2】:

 

<fmt:param >

 

标签主体

 

</fmt:param>

 

下面看一段代码,理解一下:

首先创建一个 mysrc.properties 文件,并存入内容 name="lihui" age="22"。在这里有一个路径问题需要注意,比如将这个文件放在 src/com 文件夹下,那么,引用该文件时,如下下面代码中所示,否则读取到的数据不是正确的,而是 ???name??? 类似的字符串。

复制代码
 1 <%@ page language="java" pageEncoding="GBK"%>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
4 <jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
5 <html>
6 <head>
7 <title>I18N标签库</title>
8 </head>
9 <body>
10 <H4>
11 <c:out value="资源文件读取示例"></c:out>
12 </H4>
13 <hr>
14 <fmt:bundle basename="com/mysrc">
15 <c:out value="从message资源文件中得到的key为name的值为:"></c:out>
16 <fmt:message key="name"></fmt:message>
17 </fmt:bundle>
18 <hr>
19 <fmt:setBundle basename="com/mysrc" var="m" />
20 <fmt:message key="age" bundle="${m}"></fmt:message>
21 ${m}
22 </body>
23 </html>
复制代码

显示如下:

开始的时候我是将资源文件直接放在根目录下,结果总是读取不到数据,后来查看了很多人的博客,发现该资源文件必须经过编译后在 WEB-INF/classes 文件夹下才能使用,所以,要把这个文件放在src的某个包中,这样编译之后就会在 classes 文件夹出现了。

 

在看一个例子:

此例中,资源文件mysrc.properties 的内容: test=hello,{0},welcome to my blog. Today is {1}.

复制代码
 1 <%@ page language="java" pageEncoding="gbk"%>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
4 <jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
5 <html>
6 <head>
7 <title>I18N标签库</title>
8 </head>
9 <body>
10 <H4>
11 <c:out value="<fmt:param>标签的使用"></c:out>
12 </H4>
13 <hr>
14 <fmt:bundle basename="com/mysrc">
15 <fmt:message key="test">
16 <fmt:param value="lixiaohui" />
17 <fmt:param value="${date}" />
18 </fmt:message>
19 </fmt:bundle>
20 </body>
21 </html>
复制代码

显示结果:

如果把资源文件中 test 的值设置为: test=hello,{0},welcome to my blog. Today is {1,date}.

则指定了第二个动态变量是一个日期类型的对象,这是显示结果为:

 

 

JSTL I18N 格式标签库 使用之三_____国际化

国际化这个分类中共包含两个标签:用于设定语言地区<fmt:setLocale/>和用于设定请求的字符编码的<fmt:requestEncoding>标签。

1<fmt:setLocale/>标签

<fmt:setLocale>标签用来设定用户语言区域。

【语法】:

<fmt:setLocale value=”locale”[variant=”variant”]

                           [scope=”page|request|session|application”]>

参数名

说明

EL

类型

必须

默认值

value

指定区域代码

String

java.util.Locale

variant

操作系统的类型

String

scope

设定时区的作用范围

String

page

 

 

 

 

 

 

 

 

value属性用来指定使用的语言代码,可以从浏览器的【工具】---Internet选项】---【语言】---【添加】中查看浏览器支持的语言种类及语言代码。例如:中文(zh_cn)、台湾(zh_tw)、香港(zh_mo)等。

举个例子:

 

复制代码
 1 <%@ page language="java" pageEncoding="gbk"%>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
4 <jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
5 <html>
6 <head>
7 <title>I18N标签库</title>
8 </head>
9 <body>
10 <H4>
11 <c:out value="<fmt:setlocale>标签的使用"></c:out>
12 </H4>
13 <hr>
14 <fmt:setLocale value="en_us" />
15 英文:
16 <fmt:formatDate value="${date}" type="both" dateStyle="full"
17 timeStyle="full" />
18 <hr>
19 <fmt:setLocale value="zh_cn" />
20 中文:
21 <fmt:formatDate value="${date}" type="both" dateStyle="full"
22 timeStyle="full" />
23 <hr>
24 <fmt:setLocale value="zh_TW" />
25 中国台湾:
26 <fmt:formatDate value="${date}" type="both" dateStyle="full"
27 timeStyle="full" />
28 </body>
29 </html>
复制代码

显示结果:

 

 

2 <fmt:requestEncoding>标签

该标签用于设定请求的编码格式。功能同servletRequest.setCharacterEncoding()方法相同。

 

【语法】:

 

<fmt:requestEncoding [value=”charEncoding”]/>

 

【参数说明】:

 

value属性用来指定使用的编码集例如:gbkgb2312等。当没有给出value的值时将会自动搜索取寻找合适的编码方式,因此能够很好的解决中文乱码问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值