我无法弄清楚将<c:set>
的值设置为另一个JSP标记的结果。
这是我的代码:
<c:set var="desc" value="<c:choose>
<c:when test="${model.totalHits < 200}">${model.totalHits}</c:when>
<c:otherwise>${model.results.size()}</c:otherwise></c:choose>
positions at
<c:forEach items="${model.metaCompanies}" var='item' varStatus='status'>
${item} including ${model.metaDescsingleCompany}
</c:forEach>
related to ${model.querymetacompany}."/>
获得此例外:
org.apache.jasper.JasperException: Unterminated <c:set tag
我做错了吗?有没有其他方法可以实现这种情况?
答案 0 :(得分:5)
您尝试将JSTL标记放在JSTL标记的属性中。
这没有任何意义。
您应该将JSTL标记放在JSTL标记的 body 中。 <c:set>
也是如此。评估结果最终将成为<c:set>
的值。
<c:set var="desc"><c:choose>...</c:choose><c:forEach>...</c:forEach>...</c:set>
答案 1 :(得分:2)
正如BalusC所提到的,你不应该在属性中包含标签。
您可以在此处找到代码的外观:
<c:set var="totalHits" value="${model.results.size()}"/>
<c:if test="${model.totalHits < 200}">
<c:set var="totalHits" value="${model.totalHits}"/>
</c:if>
<c:set var="items" value=""/>
<c:forEach items="${model.metaCompanies}" var='item' varStatus='status'>
<c:set var="items" value="${items} ${item} including ${model.metaDescsingleCompany}"/>
</c:forEach>
<c:set var="desc" value="${totalHits} positions at ${items} related to ${model.querymetacompany}."/>
我希望我的意图是正确的!