Тег с атрибутами JSP

Тег может содержать параметры и передавать их значения для обработки
в соответствующий ему класс. Для этого при описании тега в файле *.tld используются атрибуты, которые должны объявляться внутри элемента tag с помощью элемента attribute. Внутри элемента attribute между тегами <attribute> и </attribute> могут находиться следующие элементы:

· name – имя атрибута (обязательный элемент);

· required – указывает на то, всегда ли должен присутствовать данный атрибут при использовании тега, который принимает значение true или false (обязательный элемент);

· rtexprvalue – показывает, может ли значение атрибута быть JSP-выражением вида ${expr} или <%=expr%> (значение true) или оно должно задаваться строкой данных (значение false). По умолчанию устанавливается false, поэтому этот элемент обычно опускается, если не требуется задавать значения атрибутов во время запроса (необязательный элемент).

Соответственно для каждого из атрибутов тега класс, его реализующий, должен содержать метод setИмяАтрибута().

В следующем примере рассматривается простейший тег с атрибутом firstname, который выводит пользователю сообщение:

// пример # 3 : тег с атрибутом : HelloTag.java

package test.mytag;
import javax.servlet.jsp.tagext.TagSupport; 
import java.io.IOException;
 
public class HelloTag extends TagSupport { 
    private String firstname;
 
     public void setFirstname(String firstname) { 
        this.firstname = firstname; 
    } 
     public int doStartTag() { 
        try { 
        pageContext.getOut().write("Hello, " + firstname); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        return SKIP_BODY; 
    }
}

В файл mytaglib.tld должна быть помещена следующая информация

о теге:

<tag>

<name>hello</name>

<tag-class>test.mytag.HelloTag</tag-class>

<body-content>empty</body-content>

<attribute>

<name>firstname</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>

Использовать созданный тег в файле demotag2.jsp можно следующим образом:

пример # 4 : вызов тега с передачей ему значения : demotag2.jsp

<%@taglib uri="http://java.sun.com/jsp/jstl/core" 
prefix="c" %>
<%@ taglib uri="/WEB-INF/mytaglib.tld" prefix="mytag"%> 

<%@ page

language="java"

contentType="text/html; charset=CP1251"

pageEncoding="CP1251"

      %>
<HTML><HEAD>

<TITLE>demotag2.jsp</TITLE>

</HEAD>

<BODY>

<c:set var="login" value="Bender"/>

<mytag:hello firstname="${login}" />

</BODY>

</HTML>

При обращении по адресу:

http://localhost:8080/FirstProject/demotag2.jsp

в браузер будет выведено:

Hello, Бендер

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100