【问题标题】:Using variable in jstl "key" of <fmt:message key="<%=customFieldData%>" />在 <fmt:message key="<%=customFieldData%>" /> 的 jstl "key" 中使用变量
【发布时间】: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 项目。资源文件夹位于类路径中。但我也尝试将相同的属性文件放在根文件夹中并将 更改为 。但它给出了相同的输出
  • 实际上应该设置&lt;fmt:bundle basename="abc_messages"&gt;。这可能是一个长镜头,您是否尝试过文件名中没有下划线?您是否也尝试过硬编码 fmt:message 标签中的属性以查看是否有问题?
  • 删除main.resources. 部分。除非您实际上将它放在src/main/resources/main/resources 文件夹中,否则它不应该在那里。您是否确认您的属性文件确实在 WEB-INF/classes 文件夹中?您是否有相同的ResourceBundle 的其他语言属性文件?
  • 非常感谢您的时间和帮助@DanielBarbarian。我现在得到了预期的结果。问题在于我作为 CustomFields 数据获得的额外空间。 “颜色”是我得到的字符串,但在属性文件中有“颜色”。所以它给了???颜色 ??? .我应该在输入密钥之前修剪()customFieldData

标签: jsp jstl


【解决方案1】:

问题在于我作为 CustomFields 数据获得的额外空间。 “颜色”是我得到的字符串,但在属性文件中有“颜色”。所以它给了???颜色 ??? .我应该在输入密钥之前修剪()customFieldData

【讨论】:

    猜你喜欢
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    相关资源
    最近更新 更多