Pergunta

Eu estou tentando usar vários atributos na minha tag personalizado, por exemplo:.

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

Como posso acessar os atributos no código TagHandler?

Foi útil?

Solução

Não é realmente a resposta para o que você pediu, mas eu odeio (ou seja, nunca escrevi) I love arquivos de marca . Permite escrever etiquetas personalizadas usando arquivos JSP. Você provavelmente sabe sobre eles e não estão disponíveis / aplicável -., Mas pensei que eu iria mencioná-los apenas no caso

Outras dicas

Para acessar os parâmetros de sua classe TagHandler deve definir os membros privados e fornecer métodos de acesso.

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;}
}

então você pode acessar os parâmetros através das variáveis ??TagHandler.

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

Se você ainda tiver problemas verifique suas convenções de nomenclatura, o interpeter Java está tentando adivinhar o que o método setter é. Portanto, se seu parâmetro é "Nome" do que o método de ajuste deve ser "setFirstName" se o parâmetro é "sobrenome" o conjunto de parâmetros deve ser "setlastname". I perfer a seguir o primeiro, já que é o padrão convenção de nomenclatura Java.

Para demonstrar a solução deste problema, vamos dar uma analogia. Suponha que temos "username" e "password" que é obtido a partir index.jsp e temos que passar nossos dados no atributo tag personalizado. No meu caso o seu trabalho

<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 %>"/>

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top