Как создать JSTL тег с атрибутами

июня
11
2012
Метки: java jstl tag

Содержание

В этой статье речь пойдет о создании JSTL тега со статическими атрибутами. О динамических атрибутах будет рассказано в следующей статье.

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

То есть, TDL-файл будет выглядеть следующим образом (customattrTag.tld):


<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" 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_1.xsd">
  <tlib-version>1.0</tlib-version>
    <short-name>seostella</short-name>
    <uri>/WEB-INF/customattrTag</uri>
    <tag>
        <name>customattr</name>
        <tag-class>com.seostella.jstl.CustomAttrTag</tag-class>
        <body-content>empty</body-content>
        <info>CustomAttrTag displayes value specified in value attribute</info>
        <attribute>
            <name>myValue</name>
            <required>true</required>
            <description>Provide a value</description>
            <rtexprvalue>false</rtexprvalue>
        </attribute>
    </tag>
</taglib>

Основные параметры тега attribute:


<name>myValue</name>

- имя атрибута.


<required>true</required>

- true если атрибут обязателен, false - если не обязателен.


<description>Provide a value</description>

- описание атрибута.

В классе обработки тега (в нашем случае com.seostella.jstl.CustomAttrTag) необходимо добавить сеттер setMyValue() из-за того, что атрибут называется myValue:


package com.seostella.jstl;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class CustomAttrTag extends TagSupport{
	private static final long serialVersionUID = 1L;
	
	private String myValue;
    
    public void setMyValue(String value) {
        this.myValue = value;
    }	
    
	@Override
    public int doStartTag() throws JspException {
        try {
            pageContext.getOut().print( this.myValue );
        } catch(IOException ioException) {
            throw new JspException("Error: " + ioException.getMessage());
        }       
        return SKIP_BODY;
    }
}

Пример использования тега customattr:


<%@ taglib uri="/WEB-INF/customattrTag.tld" prefix="seostella"%>
<%@ page session="false" pageEncoding="UTF-8"%>
<html>
<head>
<title>CustomAttrTag</title>
</head>
<body>
	<h1>CustomAttrTag</h1>
	
	<p><seostella:customattr myValue="My Value"/><p>
</body>
</html>

Скачать проект, демонстрирующий работу этого тега Вы можете по следующей ссылке - Скачать customattrtag.zip

В следующей статье рассмотрим создание тега с динамическими атрибутами.

< Как создать JSTL тег Как создать JSTL тег с динамическими атрибутами >

Напишите первое сообщение!

Вы должны войти под своим аккаунтом чтобы оставлять комментарии