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

StackOverflow https://stackoverflow.com/questions/533938

  •  22-08-2019
  •  | 
  •  

Вопрос

Я хочу сделать что-то вроде этого, чтобы вызвать тег JSP 2.0:

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

Где Строки def и jkl определены earielr в файле 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 не может быть разрешен.

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top