JSP - Могу ли я использовать <jsp: attribute> внутри <c: if>? Исключение: «Для указания тела тега необходимо использовать jsp: body» - PullRequest
6 голосов
/ 18 августа 2010

У меня есть следующее внутри JSP:

<c:if test="${true}">
<jsp:attribute name="extraInlineComplianceJavascript">
window.isSummaryComplianceLinkVisible = '${TabList.isSummaryComplianceLinkVisible}';
window.isDetailComplianceLinkVisible = '${TabList.isDetailComplianceLinkVisible}';
window.complianceSummaryReportTag = '${helper.complianceSummaryReportTag}';
window.complianceDetailReportTag = '${helper.complianceReportTag}';
</jsp:attribute>
</c:if>

Как есть, я получаю следующее исключение:

 Must use jsp:body to specify tag body for &lt;MyTag if jsp:attribute is used.

Если я удаляю самые внешние теги <c:if>, это работает,Есть ли проблема с использованием <jsp:attribute> внутри <c:if>?Любая помощь будет оценена.Благодаря.

1 Ответ

5 голосов
/ 22 августа 2010

Тело элемента неявно определяется как тело соответствующего элемента.Тело также может быть представлено явно, используя,Это требуется, если один или несколькоэлементы появляются в теле тега.Проверьте ссылки для element , attribute и body .

Но это не настоящая проблема.Проблема вне очень хорошо работает с условными тегами.пытается установить атрибут для родительского тега, который в вашем примере.

Вы можете использоватьвнутри элемента (как BalusC предложил в своем комментарии), но это приведет к атрибуту с пустым значением, или вы можете перейти от:

<jsp:element ...>
  <c:if test="${true}">
    <jsp:attribute name="extraInlineComplianceJavascript">
      ....
    </jsp:attribute>
  </c:if>
</jsp:element>

к (более подробному):

<c:if test="${true}">
  <jsp:element ...>
    <jsp:attribute name="extraInlineComplianceJavascript">
      ....
    </jsp:attribute>
  </jsp:element>
</c:if>
<c:if test="${false}">
  <jsp:element ...>
     <!-- no attribute for false -->
  </jsp:element>
</c:if>

Вы также можете использовать,И, конечно, это не будет работать хорошо с более чем одним атрибутом: D.

Мое личное предложение было бы выброситьи найдите другой способ условно установить свои атрибуты.

...