Пользовательский тег JSTL - PullRequest
12 голосов
/ 29 июля 2011

Как мне написать (просто шаблон) для пользовательского тега с 2 атрибутами, который позволяет мне выводить фрагмент html (таблицу html), используя логику тега jstl, которая может быть вызвана из моего jsp.

Можно ли это сделать без написания java-класса, что я и видел во всех примерах.

Я пытаюсь добиться того, чтобы выводить повторяющуюся логику JSTL в моих JSP в специальный тег, а затем передаватьдинамические значения, необходимые для тега во время выполнения с использованием атрибутов.

Спасибо,

Ответы [ 2 ]

29 голосов
/ 23 августа 2011

Не используйте скриптлеты!Это плохая практика, и они позволяют бизнес-логике проникать в ваш слой представления.

Вы можете создать файл тегов, используя JSTL;это довольно просто Это - хорошее место для начала.

Пример:

mytable.tag :

<%@ attribute name="cell1" required="true" type="java.lang.String" description="Text to use in the first cell." %>
<%@ attribute name="cell2" required="false" type="java.lang.String" description="Text to use in the second cell." %>

<table>
 <tr>
  <td id = "cell1">${cell1}</td>
  <td id = "cell2">${cell2}</td>
 </tr>
</table>

Предполагая, чтоваш тег в /WEB-INF/tags, вы можете использовать его так:

<%@ taglib prefix="mystuff" tagdir="/WEB-INF/tags" %>

<mystuff:mytable cell1="hello" cell2="world" />
0 голосов
/ 29 июля 2011

Вместо использования тегов в вашей начальной JSP вы можете поместить выходные данные вашего условия в переменную сеанса, а затем использовать эту переменную сеанса во всех других переменных через скриптлеты.Примерно так:

Запуск JSP

<% boolean doStuff = isMyConditionTrue ? true : false;
   session.setAttribute("doStuff", doStuff);
%>

Другие JSP

<% if(session.getAttribute("doStuff") != null && (boolean)session.getAttribute("doStuff")) {
%>
  //do stuff
<% } %>
...