Пользовательский тег JSTL

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

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

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

Спасибо,


person van    schedule 29.07.2011    source источник


Ответы (2)


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

Вы можете создать файл тегов, используя 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" />
person Vivin Paliath    schedule 23.08.2011

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

Запуск JSP

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

Другие JSP

<% if(session.getAttribute("doStuff") != null && (boolean)session.getAttribute("doStuff")) {
%>
  //do stuff
<% } %>
person legendofawesomeness    schedule 29.07.2011
comment
в моем сценарии я хочу повторно использовать фрагмент моего jstl - person van; 29.07.2011