0

${x}="mit"

${Place['name_mit']}将给出结果为美国。

但是如果我尝试${Place['name_'+x]}我会得到错误。

如何解决这个问题?

4

2 回答 2

0

是的,它无法编译,因为+运算符不用于字符串连接(在 EL 3.0、Java EE 7 之前)。
只需使用concat

${Place['name_'.concat(x)]}

从表达式语言 3.0 开始,
使用+运算符连接两个字符串是有效的。

${Place['name_'+x]}  //valid as of EL 3.0

EL 3.0 规格

字符串连接运算符

评估

A += B 
  • 将 A 和 B 强制转换为字符串。
  • 返回 A 和 B 的连接字符串。
于 2013-11-07T06:05:36.467 回答
-1

您不能像那样内联连接映射键。这对我有用:

<%
    Map<String, String> things = ImmutableMap.of("thing1", "a", "thing2", "b", "thing3", "c");
    pageContext.setAttribute("things", things);
    for (int i = 1; i <= 3; i++) {
        String key = "thing" + i;
        pageContext.setAttribute("key", key);

%>
    <c:out value="${key}"/>: <c:out value="${things[key]}"/> <br>
<%
    }
%>

显然,如果没有来自您的用例的上下文,我必须自己拼凑一个适当的页面上下文状态。必要时替换。

于 2013-11-06T18:44:25.407 回答