2012-02-25 14 views
5

Las baldosas y Sitemesh se ven bastante populares, pero estas cosas son muy viejas y se ven terribles en comparación con las cosas increíbles de, p. Ej. Ruby (ERB) o PHP (Plantilla de energía abierta). En la actualidad, los motores de plantillas permiten plantillas cómodas (insertando variables, autoescaping dependiendo del contexto, iterando a través de Iterables, accediendo a propiedades de bean) y mapeando (por ejemplo, encabezados, pies de página y reemplazando y agregando algunas partes definidas en parent) sin ninguna configuración difícil y sin necesidad de cambiar su pila actual (por ejemplo, su marco web).JSP, Sitemesh y Azulejos hardcore: ¿alguna alternativa?

Ejemplo Parent.html:

<html> 
    <head> 
    <title> 
     <layout:part name="title"> 
     Default title 
     </layout:part> 
    </title> 
    <layout:part name="head" /> 
    </head> 
    <body> 
    <div class="menu" layout:part="menu"> 
     default menu 
    </div> 
    <div class="content" layout:part="content" /> 
    <div class="footer"> 
     (c) me 
    </div>  
    </body> 
</html> 

Ejemplo Child.html

<layout:extend file="parent.html"> 
    <layout:fill name="title"> 
    Custom title 
    </layout:fill> 
    <layout:fill name="contnet"> 
    the content 
    {$var} from model 
    </layout:fill> 
</layout:extend> 

estoy en busca de mejores Facelets, que no requerirá de mí para cambiar toda la pila - Soy no va a adaptar todo el proyecto a JSF o Wicket solo para usar mejores vistas.

El motor de plantillas no debería requerir ningún servlet o filtro adicional (sin lógica basada en URL). Quiero usar el motor programáticamente. Un posible caso de uso es la definición de un ViewResolver personalizado en Spring 3.

Sería perfecto si los diseños no se definieran por adelantado en un archivo de configuración. Eso no es necesario si solo defines la vista principal en el archivo de plantilla.

El marco puede estar encima de JSP pero no tiene que hacerlo. La ventaja es la posibilidad de utilizar taglibs proporcionados por otros marcos (por ejemplo, Spring).

¿O tal vez todo ya está en Sitemesh/Tiles pero necesita mucha configuración? Si conoce alguna configuración de ejemplo que le permita alcanzar todos los objetivos mencionados, infórmeme al respecto.

Pregunta relacionada: what alternatives exist to Sitemesh to help layout JSP/JSTL page footers/headers in a Spring MVC app? - mi pregunta se refiere a la creación de plantillas también, y no se limita a Spring Web MVC.

+0

¿Por qué crees que Tiles 2 tiene un estilo antiguo? Acabo de pasar por alto ERB, pero parece que puedes lograr las mismas características usando Tiles 2 y Velocity, por ejemplo. ¿Que necesitas? – sinuhepop

+0

Se desaconseja solicitar sugerencias de marcos aquí. Si desea [editar] todas las solicitudes y hacer una pregunta que pueda responderse aquí sin hacer clic fuera del sitio, hágalo y marque para volver a abrir. Gracias. – Will

Respuesta

3

I tienen siempre supported the idea that JSP is a good-enough view technology que también es utilizable para plantillas (utilizando incluye)

Para manipulación programática utilizo velocidad, que es bastante simple y directo.

La mejor tecnología de visualización que he encontrado en el mundo de Java es el GSP de Grails, pero es posible que deba migrar toda la capa web a griales, lo que no siempre es una opción.

Solo una nota final: hagas lo que hagas, no uses freemarker. Es innecesariamente complicado y no puede lograr fácilmente tareas simples.

+2

Lo leí antes. Tengo que admitir que tener una pila complicada compuesta por Sitemesh, Tiles, Velocity y muchos archivos de configuración no es buena. Sin embargo, los JSP simples no ayudan con el diseño y son bastante débiles con la creación de plantillas. Al estar acostumbrado a los buenos motores de plantillas de Ruby, PHP, es bastante frustrante no tener el equivalente en Java, la pila con la que trabajo la mayor parte del tiempo. :( – Nowaker

+1

grails es bueno para eso - (g) rails – Bozho

+3

Esto es una pila completa.No puedo ver una razón por la cual los desarrolladores deberían migrar proyectos existentes a JSF solo para usar Facelets, a Grails solo para usar GSP, y así sucesivamente. – Nowaker