【发布时间】:2014-11-03 10:45:37
【问题描述】:
在我的 jsp 页面中,有一些标签来自 spring mvc 中的控制器。但我正在尝试使用属性文件来显示这些标签的不同值。这是我的jsp代码
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:bundle basename="main.resources.abc_messages">
<%
if (request.getAttribute("customFields") != null) {
String line = request.getAttribute("customFields").toString();
line = line.subSequence(1, line.length() - 1).toString();
String[] data = splitLineIntoArray(line, ",");
for (int i = 0; i < data.length; i++) {
String field = data[i];
String[] customFieldData = splitLineIntoArray(field, "=");
%>
<div class="row">
<div class="left">
<fmt:message key="<%=customFieldData[0]%>"/>
</div>
<div class="right">
<input type="text" type="customField"
value="<%=customFieldData[1]%>" id="customField"
class="inputfixed" disabled="true" />
</div>
<div class="clear"></div>
</div>
<%
}
}
%>
</fmt:bundle>
我已将属性文件 abc_messages.properties 放在类路径中。当我使用 key="abc" 并且属性文件有 abc=xyz 时,我得到 xyz 的值。但是在此处根据需要使用变量时,我得到了???。 但我总是把它作为输出
??? color??? : green
??? font ??? : arial
abc_messages.properties 文件
color=Main Color
font=Main Font
【问题讨论】:
-
您在构建时是否使用 maven,这就是为什么您将属性文件放在
src/main/resources中的原因? -
是的,它是一个 Maven 项目。资源文件夹位于类路径中。但我也尝试将相同的属性文件放在根文件夹中并将
更改为 。但它给出了相同的输出 -
实际上应该设置
<fmt:bundle basename="abc_messages">。这可能是一个长镜头,您是否尝试过文件名中没有下划线?您是否也尝试过硬编码fmt:message标签中的属性以查看是否有问题? -
删除
main.resources.部分。除非您实际上将它放在src/main/resources/main/resources文件夹中,否则它不应该在那里。您是否确认您的属性文件确实在WEB-INF/classes文件夹中?您是否有相同的ResourceBundle的其他语言属性文件? -
非常感谢您的时间和帮助@DanielBarbarian。我现在得到了预期的结果。问题在于我作为 CustomFields 数据获得的额外空间。 “颜色”是我得到的字符串,但在属性文件中有“颜色”。所以它给了???颜色 ??? .我应该在输入密钥之前修剪()customFieldData