java - example - Mejor alternativa a Apache Tiles
spring mvc and apache tiles (5)
(similar a this )
No necesitas una definición para cada acción.
Esta configuración de placa de caldera se cuelga de las baldosas-1 días. Realmente no es necesario con tiles-2 cuando se introdujeron comodines, y especialmente con tiles-3 junto con el OptionsRenderer.
Aquí hay un tech.finn.no/the-ultimate-view-tiles-3 que te ayudará con
- Integración de la primavera a las baldosas.
- definiciones con comodines,
- implementando un patrón alternativo utilizando el OptionsRenderer, y
- definiciones de composición.
Estoy buscando un marco que sea mejor y más fácil de usar que Apache Tiles (que hasta ahora he usado un par de veces).
Con Tiles, parece que cuando tengo 100 acciones necesito crear 100 archivos jsp y crear 100 definiciones en tiles.xml
.
¿Hay un mejor marco para administrar mis plantillas? Quiero crear, por ejemplo, 2 plantillas:
a) menú y columna de contenido
b) Menú, columna para contenido, columna derecha con banner.
En ambas plantillas el menú es constante. En la template b
, la columna de la derecha es constante, por lo que solo la columna de contenido es diferente. Para este ejemplo simple no quiero definir cada archivo JSP que amplíe la template a
(solo para proporcionar un cuerpo). Eso es cojo imo. O tal vez estoy cojo y puedo definir una plantilla POR DEFECTO en Apache Tiles y simplemente no la estoy usando bien. En cualquier caso, toda la ayuda apreciada.
Basándome en la experiencia, le recomendé encarecidamente a Apache Wicket.
En general, recomendaría SiteMesh sobre Tiles.
Here''s cómo configurar SiteMesh 3
Puede usar Tiles para las plantillas en la página, pero use SiteMesh para la plantilla de todo el sitio. Sin embargo...
Cómo hacer que los azulejos chupen menos:
Utilice la convención sobre la configuración. Por ejemplo, ponga sus definiciones en
webapp/WEB-INF/tiles.xml
y no es necesario que diga los mosaicos dónde están.Usa comodines:
<definition name="default" template="/WEB-INF/templates/default.jsp">
<put-attribute name="titleKey" value=""/>
<put-attribute name="body" value=""/>
</definition>
<definition name="*" extends="default">
<put-attribute name="titleKey" value="{1}.title"/>
<put-attribute name="body" value="/WEB-INF/views/{1}.jsp" />
</definition>
Si su controlador devuelve el index
nombre de vista, coincidirá con la definición *
y usará el archivo JSP /WEB-INF/views/index.jsp
para el cuerpo, y use la propiedad de mensaje index.title
.
Si su controlador devuelve el nombre de vista contact-us
, coincidirá con la definición *
, y usará el archivo JSP /WEB-INF/views/contact-us.jsp
para el cuerpo, y usará la propiedad del mensaje contact-us.title
En su plantilla, agregue:
<c:set var="titleKey"><tiles:getAsString name="titleKey" /></c:set>
y
<title><spring:message code="${titleKey}"/></title>
Agregue el bean ReloadableResourceBundleMessageSource
al contexto de su aplicación servlet.
Haga un archivo /src/main/resources/messages.properties
, con contenido como:
index.title = Welcome to Acme, Inc.
contact-us.title = Contact Us
Otro enfoque es Sitemesh . Fue diseñado para acoplar vistas donde no se puede modificar el original, por lo que es más un marco de transformación / decoración html que un marco de plantillas como Azulejos.
En mi opinión personal, Tiles es el mejor enfoque para las aplicaciones, e intentaría implementar algún tipo de resolución (basado en algunas convenciones de nomenclatura) que hace que los archivos xml sean obsoletos, pero esa no era la cuestión.
Ver: Esta introducción anterior muestra cómo funciona SiteMesh.
Terminé usando JSF + Facelets. Los he combinado con Spring MVC y funciona a la perfección.