jstl中的bundle和locale到底是怎么运行的?

<%@page import="javax.servlet.jsp.jstl.core.Config"%>
<%@page import="java.util.Locale"%>
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<fmt:setLocale value="${header['accept-language'] }" scope="session" />

${header['accept-language']}


<hr/>



<fmt:setBundle basename="resource" var="myres" scope="session" />
<fmt:bundle basename="resource">
    <fmt:message key="hello" var="hello"></fmt:message>
    <fmt:message key="label.phone" ></fmt:message>
${hello }
</fmt:bundle>

这是我的运行的java代码, 我设置了zh-CN的properties的属性文件, 也包含了默认的properties文件, 我的系统的默认环境是中文, 按照正常而言, 输出的文本应该是中文格式的, 但是google浏览器运行结果却是英文环境的, 如下图
图片描述
我的配置文件:
图片描述

resource.properties内容:
    hello=Nice to meet you.
    label.phone = phone
resource_zh_CN内容:
    hello = 你好
    label.phone = 电话

这到底是为什么, 这resourceBundle和locale两个类运行到底是怎么回事?

火狐的结果入下:
图片描述

阅读 4.1k
1 个回答

这个用的是 浏览器的 preferred language. Firefox的一般在Options ->Content ->Languages, 其他浏览器自己google. 最终此语言被放在HTTP请求的 Accept-Language 头里

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进