JSP JSTL <fmt:bundle> 标签
JSP 标准标签库(JSTL) **<fmt:bundle> 标签将指定的资源束对出现在 <fmt:bundle> 标签中的 <fmt:message> 标签可用
这样我们就可以省去为每个 <fmt:message>标签指定资源束的很多步骤
比如说,下面的两个 <fmt:bundle> 块将产生同样的输出:
<fmt:bundle basename="cn.twle.demo"> <fmt:message key="count.title"/> </fmt:bundle>
<fmt:bundle basename="cn.twle.demo" prefix="count."> <fmt:message key="title"/> </fmt:bundle>
语法
<fmt:bundle> 标签语法格式如下
<fmt:bundle baseName="<string>" prefix="<string>"/>
属性
<fmt:bundle> 标签有如下属性:
属性 | 描述 | 必须 | 默认值 |
---|---|---|---|
basename | 指定被载入的资源束的基础名称 | 是 | 无 |
prefix | 指定 <fmt:message> 标签 key 属性的前缀 | 否 | 无 |
资源束
资源束包含区域特定对象
资源束包含键值对
当我们的程序需要区域特定资源时,可以将所有的关键词对所有的 locale 共享,但是也可以为 locale 指定转换后的值
资源束可以帮助提供指定给 locale 的内容
一个 Java 资源束文件包含一系列的键值对
范例
首先我们来建立一个资源束,在 src/main/resources
目录下建立一个 demo_zh_CN.properties
文件,内容如下
count.one=\u58f9 count.two=\u8d30 count.three=\u53c1
properties 文件里的内容要转成 Unicode
然后再创建一个 demo_en_US.properties
文件,内容如下
count.one=first count.two=second count.three=three
接下来我们开发 JSP 页面,内容如下
webapp/jstl_fmt_bundle.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <!DOCTYPE html> <meta charset="utf-8"> <style> table { border-collapse: collapse; } table,th,td {border:1px solid #ddd;} th,td {padding:5px 10px;text-align: left} </style> <title>JSTL <fmt:bundle> 标签 - JSP 基础教程 | 简单教程(www.twle.cn)</title> <fmt:bundle basename="demo" prefix="count."> <fmt:message key="one"/><br/> <fmt:message key="two"/><br/> <fmt:message key="three"/><br/> </fmt:bundle> <p>JSTL <fmt:bundle> 标签 - JSP 基础教程 | 简单教程(www.twle.cn)</p>
在浏览器上输入 http://localhost:8080/jsp/jstl_fmt_bundle.jsp 显示如下
将其改为无 prefix 属性:
webapp/jstl_fmt_bundle_no_prefix.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <!DOCTYPE html> <meta charset="utf-8"> <style> table { border-collapse: collapse; } table,th,td {border:1px solid #ddd;} th,td {padding:5px 10px;text-align: left} </style> <title>JSTL <fmt:bundle> 标签 - JSP 基础教程 | 简单教程(www.twle.cn)</title> <fmt:bundle basename="demo"> <fmt:message key="count.one"/><br/> <fmt:message key="count.two"/><br/> <fmt:message key="count.three"/><br/> </fmt:bundle> <p>JSTL <fmt:bundle> 标签 - JSP 基础教程 | 简单教程(www.twle.cn)</p>
在浏览器上输入 http://localhost:8080/jsp/jstl_fmt_bundle_no_prefix.jsp 显示如下
可以查看 <fmt:setLocale> 和 <fmt:setBundle> 来获取更多信息