【发布时间】:2014-08-07 12:29:46
【问题描述】:
在浏览了整个互联网后,我最终提出了这个问题,尽管我觉得描述这种情况有点困难。
我这里有一个小应用程序,它在嵌入式 Tomcat 服务器 (v7) 上运行,并使用 servlet 和 JSP;我尝试使用 JSTL 标签将它们国际化。最终项目部署为 JAR,当我使用 java -jar 从控制台运行它时,嵌入式服务器启动良好,一切正常。
问题是,当我尝试在 IDE 中运行它时(我使用 IntelliJ Idea v13.1.2):再次启动,但页面显示的不是包中的值,而是值比如???default.username???。
这是我的 JSP 的主要外观:
<!DOCTYPE html>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="language"
value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}"
scope="session"/>
<fmt:setLocale value="${language}"/>
<fmt:setBundle basename="messages" scope="session" var="bund"/>
<html>
<head>
<title><fmt:message bundle="${bund}" key="default.title" /></title>
<link rel="stylesheet" type="text/css" href="../css/tdb.css" media="all">
</head>
等等。 <fmt:message bundle="${bund}" key="default.title" /> 和类似的部分在我使用 JAR 时工作得很好,并导致 ???default.title???从 IDE 时。在一种情况下,我使用来自 servlet 的捆绑文件,当从 JAR 运行时,它工作正常,而当从 IDE 运行时,它会导致 java.util.MissingResourceException。
到目前为止我尝试了什么?我在不同位置添加了我的 messages.properties 和 messages_en_US.properties 文件(在资源文件夹中,与 java 和 webapp 文件夹处于同一级别;在单独的包中在 com.my.example 包中;作为 com.my.example 包中的简单属性文件),尝试仅使用基本名称 (resourceBundle = ResourceBundle.getBundle("messages", locale);) 或完全限定路径来引用它;另外,我在 web.xml 文件中设置了 fallbackLocale 和 localizationContext 参数。
我错过了什么?
【问题讨论】:
标签: java jsp servlets intellij-idea internationalization