Як створити 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 тег з динамічними атрибутами >

Напишіть перше повідомлення!

Ви повинні увійти під своїм аккаунтом щоб залишати коментарі