1. Información general
Apache Tiles es un marco de creación de plantillas de código abierto y gratuito que se basa exclusivamente en el patrón de diseño compuesto.
Un patrón de diseño compuesto es un tipo de patrón estructural que compone objetos en estructuras de árbol para representar jerarquías de partes completas y este patrón trata los objetos individuales y la composición de los objetos de manera uniforme. En otras palabras, en Tiles, una página se construye ensamblando una composición de subvistas llamadas Tiles.
Las ventajas de este marco sobre otros marcos incluyen:
- reutilización
- facilidad en la configuración
- gastos generales de bajo rendimiento
En este artículo, nos centraremos en la integración de Apache Tiles con Spring MVC .
2. Configuración de dependencia
El primer paso aquí es agregar la dependencia necesaria en el pom.xml :
org.apache.tiles tiles-jsp 3.0.8
3. Archivos de diseño de mosaicos
Ahora necesitamos definir las definiciones de la plantilla y, específicamente, según cada página, sobrescribiremos las definiciones de la plantilla para esa página específica:
4. ApplicationConfiguration y otras clases
Como parte de la configuración, crearemos tres clases de Java específicas llamadas ApplicationInitializer , ApplicationController y ApplicationConfiguration :
- ApplicationInitializer inicializa y verifica la configuración necesaria especificada en las clases ApplicationConfiguration
- La clase ApplicationConfiguration contiene la configuración para integrar Spring MVC con el marco Apache Tiles
- La clase ApplicationController funciona en sincronía con el archivo tiles.xml y redirige a las páginas necesarias basándose en las solicitudes entrantes
Veamos cada una de las clases en acción:
@Controller @RequestMapping("/") public class TilesController { @RequestMapping( value = { "/"}, method = RequestMethod.GET) public String homePage(ModelMap model) { return "home"; } @RequestMapping( value = { "/apachetiles"}, method = RequestMethod.GET) public String productsPage(ModelMap model) { return "apachetiles"; } @RequestMapping( value = { "/springmvc"}, method = RequestMethod.GET) public String contactUsPage(ModelMap model) { return "springmvc"; } }
public class WebInitializer implements WebApplicationInitializer { public void onStartup(ServletContext container) throws ServletException { AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); ctx.register(TilesApplicationConfiguration.class); container.addListener(new ContextLoaderListener(ctx)); ServletRegistration.Dynamic servlet = container.addServlet( "dispatcher", new DispatcherServlet(ctx)); servlet.setLoadOnStartup(1); servlet.addMapping("/"); } }
Hay dos clases importantes que juegan un papel clave en la configuración de mosaicos en una aplicación Spring MVC. Son TilesConfigurer y TilesViewResolver :
- TilesConfigurer ayuda a vincular el marco de Tiles con el marco de Spring al proporcionar la ruta al archivo de configuración de mosaicos
- TilesViewResolver es una de las clases de adaptador proporcionadas por Spring API para resolver la vista de mosaicos
Finalmente, en la clase ApplicationConfiguration , usamos las clases TilesConfigurer y TilesViewResolver para lograr la integración:
@Configuration @EnableWebMvc @ComponentScan(basePackages = "com.baeldung.spring.controller.tiles") public class TilesApplicationConfiguration implements WebMvcConfigurer { @Bean public TilesConfigurer tilesConfigurer() { TilesConfigurer tilesConfigurer = new TilesConfigurer(); tilesConfigurer.setDefinitions( new String[] { "/WEB-INF/views/**/tiles.xml" }); tilesConfigurer.setCheckRefresh(true); return tilesConfigurer; } @Override public void configureViewResolvers(ViewResolverRegistry registry) { TilesViewResolver viewResolver = new TilesViewResolver(); registry.viewResolver(viewResolver); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**") .addResourceLocations("/static/"); } }
5. Archivos de plantilla de mosaicos
Hasta ahora habíamos terminado la configuración del framework Apache Tiles y la definición de la plantilla y los mosaicos específicos utilizados en toda la aplicación.
En este paso, necesitamos crear los archivos de plantilla específicos que se han definido en tiles.xml .
Encuentre el fragmento de los diseños que se puede utilizar como base para crear páginas específicas:
6. Conclusión
Con esto concluye la integración de Spring MVC con Apache Tiles.
Puede encontrar la implementación completa en el siguiente proyecto de github.