我正在尝试使用基于 How to internationalize a Java web application? 的 JSTL 1.2 来国际化我的网站.这是 JSP 文件的开头:
<%@ page pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<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="com.bundle.test" />
<html lang="${language}">
这是
test.properties
文件:login.label.username = Username
login.label.password = Password
login.button.submit = Sign in
login.label.direction = rlt
在正文中,我包含了以下几行:
<label for="username"><fmt:message key="login.label.username" /></label>
但是当我在浏览器中打开 JSP 页面时,它输出如下:
???login.label.username???
我希望它输出值“用户名”。
这是怎么引起的,我该如何解决?
最佳答案
格式为 ???key???
的消息表示找不到与 key 关联的消息。这可能意味着您输入了 key ,或者该 key 在包文件中不存在,甚至整个包文件作为运行时类路径中的资源不存在。
鉴于 key 看起来不错,并且存在于包文件中,这只能意味着 webapp 找不到包文件作为类路径资源。
鉴于您正在使用 Maven,您应该确保已将它们放在 /src/main/resources
中。文件夹。在您的特定情况下,包名称为 com.bundle.test
,你应该有一个 /src/main/resources/com/bundle/test.properties
文件就在那里。
如果这仍然不起作用,那么好吧,您的构建可能很脏或损坏了。清洁和重建是肯定的。然后使用一些 ZIP 工具提取 Maven 生成的 WAR 文件并浏览其内容。它最终应该在 /WEB-INF/classes
结束文件夹如 /WEB-INF/classes/com/bundle/test.properties
.
关于jsp - fmt :message prints key with question marks like so "???login.label.username???",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30617950/