无法将JSP标记的结果指定为c:set的值

时间:2015-07-28 07:44:43

标签: jsp jstl

我无法弄清楚将<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 &lt;c:set tag

我做错了吗?有没有其他方法可以实现这种情况?

2 个答案:

答案 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}."/>

我希望我的意图是正确的!