Biblioteca de etiquetas personalizadas JSP (atributos de paso)
-
03-07-2019 - |
Pregunta
Estoy intentando usar múltiples atributos en mi etiqueta personalizada, por ejemplo:
<mytaglib:mytag firstname="Thadeus" lastname="Jones" />
¿Cómo puedo acceder a los atributos en el código de TagHandler?
Solución
Realmente no es la respuesta a lo que preguntaste, pero odio (es decir, nunca he escrito) a TagHandler, pero me encanta archivos de etiquetas . Te permite escribir etiquetas personalizadas usando archivos jsp. Probablemente sepa sobre ellos y no esté disponible / aplicable, pero pensó que los mencionaría por si acaso.
Otros consejos
Para acceder a los parámetros, su clase TagHandler debe definir los miembros privados y proporcionar métodos de acceso.
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;}
}
luego puede acceder a los parámetros a través de las variables TagHandler.
public int doStartTag() throws JspException {
pageContext.getOut().print(lastName + ", " + firstName);
}
Si todavía tiene problemas, revise dos veces sus convenciones de nombres, el intérprete de Java está tratando de adivinar cuál es el método de establecimiento. Entonces, si su parámetro es " Nombre " el método establecido debe ser " setFirstName " si el parámetro es " apellido " el parámetro establecido debe ser " setlastname " ;. Prefiero seguir el primero, ya que es la convención estándar de nomenclatura de Java.
Para demostrar la solución de este problema, veamos una analogía. Supongamos que tenemos " nombre de usuario " y " contraseña " que se recupera de index.jsp y tenemos que pasar nuestros datos en el atributo de etiqueta personalizada. En mi caso está funcionando
<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 %>"/>