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打印结果请帮帮我
我的项目需要
答案 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>
上面的代码将遍历列表中的每个对象,并且每个对象都会在“_”上替换“”(空格)操作并打印出来。