Как я могу предоставить EL-выражения в качестве параметров во вложенных тегах jsp 2.0?
Вопрос
Я хочу сделать что-то вроде этого, чтобы вызвать тег 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" %>