Библиотека пользовательских тегов JSP (Передача атрибутов) - PullRequest
2 голосов
/ 22 октября 2008

Я пытаюсь использовать несколько атрибутов в моем пользовательском теге, например ::10000

<mytaglib:mytag firstname="Thadeus" lastname="Jones" />

Как получить доступ к атрибутам в коде TagHandler?

Ответы [ 3 ]

4 голосов
/ 22 октября 2008

Чтобы получить доступ к параметрам, ваш класс TagHandler должен определить закрытые члены и предоставить методы доступа.

public class TagHandler extends TagSupport {
    private String firstName;
    private String lastName;

    public void setFirstName(String firstname) { firstName = firstname; }
    public void setLastName(String lastname) { lastName = lastname;}
}

затем вы можете получить доступ к параметрам через переменные TagHandler.

public int doStartTag() throws JspException {
    pageContext.getOut().print(lastName + ", " + firstName);
}

Если у вас все еще есть проблемы, дважды проверьте соглашения об именах, интерпретатор Java пытается угадать, что такое метод setter. Таким образом, если ваш параметр «FirstName», то метод set должен быть «setFirstName», если параметр «lastname», параметр set должен быть «setlastname». Я предпочитаю следовать первому, так как это стандартное соглашение об именах Java.

0 голосов
/ 06 августа 2017

Чтобы продемонстрировать решение этой проблемы, давайте возьмем аналогию. Предположим, у нас есть «userName» и «password», которые извлекаются из index.jsp, и мы должны передать наши данные в атрибуте пользовательского тега. В моем случае это работает

<body>

<%
String name=request.getParameter("name");
String password=request.getParameter("password");
%>

<%@ taglib prefix="c" uri="/WEB-INF/mytag.tld" %>

<c:logintag name="<%=name %>" password="<%=password %>"/>

0 голосов
/ 22 октября 2008

Не совсем ответ на ваш вопрос, но я ненавижу (то есть никогда не писал) TagHandler, но мне нравятся теги Позволяет писать собственные теги с использованием файлов JSP. Вы, вероятно, знаете о них и не доступны / не применимы - но я подумал, что я упомяну их на всякий случай.

...