Je veux utiliser des balises jsp personnalisées pour aider à construire un menu dans mon application. Cependant, je veux que tout le HTML actuel vive dans les fichiers JSP, plutôt que dans la classe Java.Peut inclure un jsp dans une classe TagSupport personnalisée, et spécifier où le corps devrait aller?
Ainsi, supposons que j'ai un tag comme ceci:
<mytags:Menu>
<mytags:MenuItem name="foo"/>
<mytags:MenuItem name="bar"/>
<mytags:MenuItem name="baz"/>
</mytags:Menu>
Je pourrais alors la classe pour mon tag Menu
, qui ressemble à ceci:
public class MenuPill extends TagSupport {
public int doStartTag() throws JspException {
try {
pageContext.include("/menu/menu.jsp");
} catch (ServletException e) {
throw new JspException(e);
} catch (IOException e) {
throw new JspException(e);
}
return super.doStartTag();
}
}
Mon fichier menu.jsp
, qui est le wrapper pour le menu lui-même, alors pourrait ressembler à ceci:
<div id="menu>
<%somehow include the body here%>
</div>
Ce que je veux faire est de mettre le corps de ma balise mytags:Menu
, qui va générer le code HTML pour les éléments de menu réels, dans le menu.jsp
, entre les balises d'ouverture et de fermeture. Je sais que je pourrais le décomposer en deux fichiers jsp différents, un pour la balise de début, et un pour la balise de fin, mais cela semble bâclé.
Est-ce possible?
Merci!