Vorrei scrivere un tag JSP personalizzato il cui output include altri tag JSP che dovrebbero essere anch'essi valutati dinamicamente. Ma a quanto pare tutto ciò che la sottoclasse scrive a pageContext.getOut()
va direttamente al client senza ulteriori valutazioni.Come posso creare un tag JSP personalizzato che utilizza altri tag JSP?
Ho la sensazione che questo dovrebbe essere molto semplice, dal momento che sembra una delle prime cose che si vorrebbe usare tag personalizzati per: incapsulare e riutilizzare altri tag personalizzati, evitando la duplicazione del codice.
Come faccio a fare il seguente codice fare ciò che vuole, ovviamente, per fare ?:
public class MyTag extends TagSupport {
public int doStartTag() throws JspException {
try {
pageContext.getOut().println(
"The output from this tag includes other tags " +
"like <mypackage:myOtherTag>this one</mypackage:myOtherTag> " +
"which should themselves be evaluated and rendered."
)
} catch (IOException e) {
throw new JspException(e);
}
return SKIP_BODY;
}
}
Edit: Alcuni retroscena sul mio particolare caso d'uso, se aiuta. Ho un tag personalizzato <user>
che rende dinamicamente un nome utente in un modo che è utile per la mia applicazione (mouse-hover per nome, cognome, numero di telefono, ecc.). Ora sto scrivendo un altro tag <comment>
per visualizzare i commenti degli utenti e vorrei utilizzare il mio tag <user>
esistente per il rendering dei nomi utente nell'output del tag <comment>
.
Questo dovrebbe aiutare: http://stackoverflow.com/ questions/2502282/custom-jsp-tag-how-do-i-get-the-body-the-tag –