Пожалуйста, найдите ответ ниже, который печатает нечетное значение с помощью пользовательского тега.
1) Создать класс обработчика тега
Чтобы создать обработчик тегов, мы наследуем класс TagSupport и переопределяем его метод doStartTag (). Чтобы записать данные для jsp, нам нужно использовать класс JspWriter.
Класс PageContext предоставляет метод getOut (), который возвращает экземпляр класса JspWriter. Класс TagSupport предоставляет экземпляр pageContext по умолчанию.
package com.test;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.TagSupport;
public class CountTagHandler extends TagSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
public int doStartTag() throws JspException {
JspWriter out=pageContext.getOut();
try{
Integer attribute = (Integer)pageContext.getAttribute("numberOfVisits", PageContext.APPLICATION_SCOPE);
//Print the value only if it is even
if(attribute != null && attribute % 2 == 0) {
out.print(attribute);
}
}catch(Exception e){System.out.println(e);}
return SKIP_BODY;
}
}
2) Создать файл TLD
Файл дескриптора библиотеки тегов (TLD) содержит информацию о тегах и классах Tag Hander. Он должен содержаться в каталоге WEB-INF.
Файл: mytags.tld
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>simple</short-name>
<uri>http://tomcat.apache.org/example-taglib</uri>
<tag>
<name>count</name>
<tag-class>com.test.CountTagHandler</tag-class>
</tag>
</taglib>
3) Создать файл JSP
Давайте использовать тег в нашем файле JSP. Здесь мы указываем путь к файлу tld напрямую. Но рекомендуется использовать имя uri вместо полного пути файла tld. Мы узнаем об Ури позже.
Использует директиву taglib для использования тегов, определенных в файле tld.
Из jsp или из любого другого места в проекте установите "numberOfVisits" .
Например:
jsp file1 :
<%! static int count = 0; %>
<%
application.setAttribute("numberOfVisits", count++);
%>
<a href="second.jsp">Custom link</a>
Это второй файл jsp:
<h3>Using tag</h3>
<%@ taglib uri="WEB-INF/mytags.tld" prefix="m" %>
Application count: <m:count/>