Как я могу дать выражения EL в качестве параметров во вложенных тегах jsp 2.0? - PullRequest
3 голосов
/ 10 февраля 2009

Я хочу сделать что-то подобное для вызова тега JSP 2.0:

<mytags:foo abc="<%=def%>">
  <mytags:bar ghi="<%=jkl%>"/>
</mytags:foo>

Где строки def и jkl определены ранее в файле jsp. Предположим, мои файлы тегов выглядят так:

foo.tag

<%@ tag body-content="scriptless" %>
<%@ attribute name="abc" required="true" %>
<div class="${abc}">
  <jsp:doBody/>
</div>

bar.tag:

<%@ tag body-content="scriptless" %>
<%@ attribute name="ghi" required="true" %>
<div>${ghi}</div>

Я хочу, чтобы вывод выглядел так:

<div class="def">
<div>jkl</div>
</div>

(при условии, что переменные def и jkl были инициализированы в def и jkl соответственно в вызывающем файле JSP.)

Внешний тег получает свой атрибут просто отлично (<div class="def">), но внутренний не работает.

Возможно ли это? Я получаю сообщения об ошибках, которые невозможно решить с помощью jkl.

1 Ответ

4 голосов
/ 10 февраля 2009

Обратите внимание на атрибут body-content="scriptless" в директиве тега. Это означает, что тело, окруженное тегом, не может содержать код скриптлета (материал <% %>). Вам нужно использовать EL.

Это работает для меня, если я изменю материал в JSP на:

  <c:set var="def" value="def"></c:set>
  <c:set var="jkl" value="jkl"></c:set>

  <mytags:foo abc="${def}">
      <mytags:bar ghi="${jkl}"/>
  </mytags:foo>

Обратите внимание, что мне нужно добавить <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

...