Domanda

Sto cercando di utilizzare più attributi nel mio tag personalizzato, ad esempio:

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

Come posso accedere agli attributi nel codice TagHandler?

È stato utile?

Soluzione

Non proprio la risposta a ciò che hai chiesto, ma odio (cioè non ho mai scritto) di TagHandler ma amo file tag . Consente di scrivere tag personalizzati utilizzando i file jsp. Probabilmente li conosci e non sono disponibili / applicabili - ma ho pensato di menzionarli per ogni evenienza.

Altri suggerimenti

Per accedere ai parametri la tua classe TagHandler dovrebbe definire i membri privati ??e fornire metodi di accesso.

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

è quindi possibile accedere ai parametri tramite le variabili TagHandler.

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

Se i problemi persistono, ricontrollare le convenzioni di denominazione, l'interpeter Java sta provando a indovinare quale sia il metodo setter. Pertanto, se il parametro è " FirstName " che il metodo set deve essere "quotFirstName" se il parametro è " cognome " il parametro set deve essere " setlastname " ;. Mi associo a seguire il primo, poiché è la convenzione standard di denominazione Java.

Per dimostrare la soluzione di questo problema, facciamo un'analogia. Supponiamo di avere " userName " e " password " che viene recuperato da index.jsp e dobbiamo trasmettere i nostri dati nell'attributo tag personalizzato. Nel mio caso funziona

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top