每个循环项属性的jstl直接分配字符串

时间:2014-07-29 05:23:09

标签: jstl el

getResults是列表

案例1:

<c:forEach items="${get_Results} var="s1">
  ${s1}
</c:forEach>

案例2:

<c:set var="res" value="${fn:replace("get Results",' ','_')}" />
<c:forEach items="${res} var="s2">
  ${s2}
</c:forEach>

在上面的代码情况(1)中打印结果列表

但是在情况(2)中只有res正在打印

Iam尝试使用案例2打印结果请帮帮我

我的项目需要

2 个答案:

答案 0 :(得分:2)

我认为问题是如何在JSTL中使用动态变量(在运行时评估名称)。

解决方案是使用requestScope,因为:

<c:set var="varname" value="get Results" />
<c:set var="dynamicvarname" value="${fn:replace(varname,' ','_')}" />
<c:forEach items="${requestScope[dynamicvarname]} var="s2">
  ${s2}
</c:forEach>

requestScope是一个JSP implicit object,它是一个请求范围的变量名称映射到它们的值。

答案 1 :(得分:0)

这样做<c:set var="res" value="${fn:replace("get Results",' ','_')}" />你只得到一个字符串,<fn:replace()>取三个参数,你给它们,第一个 - 替换 - 它是一个字符串“get Results”,第二个要替换的符号 - 它是''(空白空间),最后是哪个符号 - “_”。作为方法<c:set>的结果,你得到了字符串 - “get_Results”。

如果要替换列表${get_Results}上的每个对象,则必须完成下一步的操作:

<c:forEach items="${get_Results} var="s1">
  <c:set var="s1_replaced" value="${fn:replace(${s1},' ','_')}" />
  <c:out value="${s1_replaced}"/>
</c:forEach>

上面的代码将遍历列表中的每个对象,并且每个对象都会在“_”上替换“”(空格)操作并打印出来。