3к6с Современные технологии интернет-программирования / JSP - Пользовательские тэги
.pdf
TLD-файл
TLD-файл содержит следующие тэги:
<short-name> краткое название библиотеки
<display-name> логическое имя (псевдоним) отображаемое в IDE и инструментарии
<tlib-version> версия библиотеки по умолчанию 1.0
<uri> задает URI которое определяет расположение библиотеки
<description> описание библиотеки
И др.
11
TLD-файл
Примерный вид пустого TLD-файла:
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
<tlib-version>1.0</tlib-version> <short-name>mylib</short-name> <uri>/WEB-INF/tlds/mylib</uri>
</taglib>
12
2. Создать java-класс обработчика тэга
(SimpleTagSupport)
package pack;
import java.text.SimpleDateFormat; import java.util.Date;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class DateTagHandler extends SimpleTagSupport { protected String mask = "dd.MM.yyyy";
protected SimpleDateFormat sdf = new SimpleDateFormat(mask);
public void doTag() throws JspException { JspWriter out = getJspContext().getOut(); try {
out.println(sdf.format( new Date())); JspFragment f = getJspBody();
if (f != null) f.invoke(out); } catch (java.io.IOException ex) {
throw new JspException("Error in date tag", ex);
}
}
}
13
2. Или создать тэг-файл и с использованием JSP-синтаксиса
Содержимое файла «mytag.tag»
<%@tag description="table message" pageEncoding="windows-1251"%>
<%@attribute name="message"%>
<table border="1" align="center" > <tr><td>
${message} </td></tr> </table>
14
Связывание файла-обработчик или тэг-файла с TLD-файлом
В TLDфайл помещается информация о
тэгах:
<tag> <name>date</name>
<tag-class>pack.DateTagHandler</tag-class> <body-content>scriptless</body-content>
</tag> <tag-file>
<name>mytag</name> <path>/WEB-INF/tags/mytag.tag</path>
</tag-file>
15
Использование библиотеки
<%@page contentType="text/html" pageEncoding="windows-1251" %>
<%@taglib prefix="my" uri="/WEB-INF/tlds/mylib" %>
<html>
<head>
</head>
<BODY>
Текущая дата: <my:date/> <br>
Сообщение в таблице: <my:mytag message="Новости"/>
</BODY>
</html>
16
