Un ejemplo de Tiles 2 con componentes anidados y ViewPreparer

Comments   0   Date Arrow  Abril 23, 2008 at 11:07am   User  by Pedro Marce

Me he pasado un buen rato para encontrarlo así que supongo será útil postearlo. El aspecto de la pantalla que quería generar era una cabecera, un menú y un cuerpo. Pero el menú quería que fuera otro componente dividido entre una parte estática (javascripts, estilos, etcétera…) y una parte dinámica que es el contenido del menú, recogido de una base de datos o fichero xml.
Así que básicamente tenemos unas definiciones de tiles compuestas por componentes anidados, y con uno de los atributos generado dinámicamente (mediante ViewPrepare).
Y ésto lo conseguimos de manera simplificada con:

  • tiles.xml
  • <tiles-definitions>
    <definition name="app.inici" template="/plantilla/normal.jsp">
    <put-attribute name="cap" value="/tiles/cap.jsp" />
    <put-attribute name="menu" value="app.menu" />
    <put-attribute name="cos" value="/tiles/buit.jsp" />
    </definition>
    <definition name="app.menu" template="/plantilla/menu.jsp" preparer="com.app.PrepareMenu">
    <put-attribute name="mostramenu" value="/tiles/menu.jsp" />
    </definition>
    </tiles-definitions>

  • /plantilla/menu.jsp
  • <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
    <tiles:insertAttribute name="definemenu" />
    <tiles:insertAttribute name="mostramenu" />

  • PrepareMenu.java
  • public class PrepareMenu implements ViewPreparer {
    public void execute(TilesRequestContext tilesRequestContext, AttributeContext attributeContext)
    throws PreparerException {
    attributeContext.putAttribute(
    "definemenu",
    new Attribute("<p>Aqui hay el html dinamico del menu</p>"));
    }
    }

  • inicio.jsp
  • <%@ page language="java" %>
    <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
    <tiles:insertDefinition name="app.inici" flush="true" />

Tagged   java · tutorial · utilidades

0 Comments

  • There are no comments yet, be the first by filling in the form below.

Leave a Comment


Cerrar
Enviar por Correo