JSP中循环内的字符串的连接

时间:2013-11-06 18:06:34

标签: java javascript jsp jstl jsp-tags

${x}="mit"

${Place['name_mit']}会将结果显示为美国。

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

如何解决这个问题?

2 个答案:

答案 0 :(得分: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 Specs

字符串连接运算符

评估

A += B 
  • 将A和B强制为字符串。
  • 返回A和B的连接字符串。

答案 1 :(得分:-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>
<%
    }
%>

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