¿Cómo elige un marco de plantillas Java para complementar Spring MVC entre JSF, Tiles, Velocity, Freemarker, Sitemesh y Thymeleaf?

Elegiría este marco basado en

  1. Soporte ¿Puedo encontrar información sobre, por ejemplo, Stackoverflow?
  2. Desarrollo activo ¿La biblioteca está muerta o todavía hay un desarrollo activo?
  3. Documentación ¿Hay documentación sólida que pueda usar?

Permítanme comenzar diciendo que JSF (Java Server Faces) es una bestia completamente diferente. Se entiende como un reemplazo para Spring MVC, no como un motor de plantillas.

Para un nuevo proyecto, usaría Thymeleaf , porque es nuevo, tiene documentación y soporte sólidos. He usado Sitemesh y Tiles antes y estaba muy contento con él. Sin experiencia con freemarker.

A veces uso la velocidad para enviar correos electrónicos.

Nota: si está utilizando Angular JS en combinación con Spring MVC, esto se convierte en una pregunta diferente (con diferentes marcos)

Un consejo si no sabe qué elegir : tome un marco aleatorio e intente configurarlo en una hora . Esto debería darte una idea y decirte si es algo que te gusta o no.

Sitemesh es algo que es más un filtro que puede facilitar el esfuerzo de incluir encabezados y pies de página comunes, JavaScript común, CSS, etc. de las páginas de contenido principal. Una vez que se muestra el contenido principal, el código de sitemesh también se aplica y devuelve la página completa. También es útil para una función de máscaras como para diferentes idiomas / perfiles / etc., puede reemplazar el CSS de nivel superior y dejar que todo lo demás permanezca igual. Por lo tanto, se puede usar con cualquiera de los marcos de plantillas

Ahora Freemarker es un buen marco de plantilla, pero teniendo en cuenta el hecho de que tiene una sintaxis muy peculiar, habría una curva de aprendizaje asociada. Puede llevar un poco más de tiempo en su esfuerzo de desarrollo si sigue una ruta alternativa debido al aprendizaje. Además, al usar JSP, es más fácil usar bibliotecas de etiquetas como JSTL que se pueden usar para extraer datos del contexto de Spring para un comportamiento dinámico. Sin embargo, con freemarker, tendrías que esforzarte mucho más para hacerlo.

Similar sería el caso con Velocity .

Sin embargo, JSF y Tiles serían mucho más fáciles de encajar con Spring MVC ya que el contexto subyacente de Spring se puede usar fácilmente.
Tengo muchas otras ideas que surgen de mi experiencia pasada en el uso de sitemesh y freemarker con spring mvc. Trataré de hacer más comparaciones.

Todo depende del patrón que intente utilizar. Prefiero Sitemesh debido a su implementación flexible del patrón decorador. Se integra bien con Spring MVC.