当前位置 : 主页 > 编程语言 > java >

jsp -fmt:message打印带有问号的键,如“??? login.label.username ???”

来源:互联网 收集:自由互联 发布时间:2021-06-25
我正在尝试使用基于 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" %%@ tag
我正在尝试使用基于 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???

我希望它输出值“Username”.

这是怎么造成的,我该如何解决?

一条消息,格式为??? key ???表示无法找到与密钥关联的消息.这可能意味着您错误地键入了密钥,或者密钥在bundle文件中不存在,或者甚至整个bundle文件作为运行时类路径中的资源缺失.

鉴于密钥看起来很好,并且存在于捆绑文件中,这只能意味着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.

网友评论