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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top