STL 标准标签库也对国际化问题提供了很好的支持,其中用于支持国际化和本地化开发的标签包括:
<fmt:setLocale>:用于设置当前本地化环境,其实为对应的 Java 类 javax.servlet.jsp.jstl.fmt.locale配置参数值,这个指定的参数由 JSP 运行时维护,用于确定各个 JSTL 标记使用的本地化环境。
<fmt:bundle>:指定消息资源使用的文件。
<fmt:message>:显示消息资源文件中指定 key 的消息,支持带参数消息。
<fmt:param>:给带参数的消息设置参数值。
<fmt:setBundle>:设置消息资源文件。
下面对各个标签逐一介绍,然后通过一个综合实例来具体讲解这些标签的使用方法。
<fmt:setLocale>设置本地化环境标签
HTML 请求到达服务器时,浏览器提供的 HTTP 首部可以指出用户的首选本地化环境(可能是多个本地化环境的列表)。这个列表放在 Accept-Language HTTP 首部中。JSP 容器会访问这个首部信息,如果没有使用标签<fmt:setLocale>明确地指定应用本地化环境,JSTL 标记就会使用这个列表中的首选本地化环境。遗憾的是,用这种方法来确定用户想用的本地化环境极不可靠,原因如下:
不同的浏览器会以不同的方式配置首选本地化环境列表。
大多数用户从来都不配置浏览器的首选本地化环境。
有些用户可能想使用另外某个本地化环境访问页面,而不是所配置的首选本地化环境。
有些用户可能会打开多个浏览器窗口(当前所有浏览器都支持这一点),并希望每个浏览器窗 口使用不同的本地化环境。
由于存在这些不可控的因素,建议还是要求用户明确地指定想用什么本地化环境。
<fmt:setLocale>标签就是专门用于设置当前本地化环境,它基本使用格式如下:
<fmt:setLocale value="...locale value..." [variant