无法将 JSP 标记的结果分配为 ​​c:set 的值

Not able to assign result of JSP tag as value of c:set

我无法用另一个 JSP 标签的结果设置 <c:set> 的值。

这是我的代码:

  <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

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

您正在尝试将 JSTL 标记放入 JSTL 标记的属性中。

这没有任何意义。

您应该将 JSTL 标签放在 JSTL 标签的 body 内。 <c:set>也是如此。评估结果最终会成为<c:set>.

的值
<c:set var="desc"><c:choose>...</c:choose><c:forEach>...</c:forEach>...</c:set>

正如 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}."/>

希望我理解你的意图!