Библиотека пользовательских тегов JSP (передача атрибутов)

StackOverflow https://stackoverflow.com/questions/224637

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

Для доступа к параметрам ваш класс 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" если параметром является «фамилия» установленный параметр должен быть «setlastname». Я предпочитаю следовать первому, поскольку это стандартное соглашение об именах Java.

Чтобы продемонстрировать решение этой проблемы , давайте приведем аналогию .Предположим, у нас есть "Имя пользователя" и "пароль", которые извлекаются из 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 %>"/>

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top