Libreria di tag personalizzati JSP (passaggio di attributi)
-
03-07-2019 - |
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?
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 %>"/>