JSP biblioteca de tag personalizado (Passando Atributos)
-
03-07-2019 - |
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?
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 %>"/>