Implementación de Etiquetas Generales de Spring en Vistas JSP

En el ecosistema de Spring MVC, el motor de vistas JSP cuenta con el apoyo de librerías de etiquetas específicas que extienden las capacidades estándar de JSTL. Estas herramientas facilitan la interacción entre el controlador y la interfaz de usuario, permitiendo gestionar de forma eficiente la internacionalización, la seguridad de los datos y la navegación.

Configuración de la librería en el JSP

Para habilitar el uso de estas etiquetas en una página JSP, es necesario incluir la siguiente directiva en la parte superior del archivo:

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

Resumen de etiquetas disponibles

La librería general de Spring proporciona un conjunto de etiquetas clave para el desarrollo de aplicaciones web:

  • <spring:message>: Gestión de mensajes e internacionalización.
  • <spring:url>: Construcción dinámica de URLs.
  • <spring:escapeBody>: Escapado de contenido HTML en el cuerpo de la etiqueta.
  • <spring:eval>: Evaluación de expresiones SpEL (Spring Expression Language).
  • <spring:bind> y <spring:hasBindErrors>: Manejo de errores de validación y vinculación.
  • <spring:theme>, <spring:htmlEscape>, <spring:transform> y <spring:nestedPath>.

Gestión de internacionalización con <spring:message>

Esta etiqueta es fundamental para desacoplar el texto estático del código fuente del JSP. Permite extraer cadenas de texto hacia archivos de propiedades externos, facilitando el mantenimiento y permitiendo que la aplicación se adapte al idioma del navegador del usuario.

Configuración del origen de mensajes

Para que la etiqueta funcione, se debe definir un bean de tipo MessageSource en la configuración de Spring. Existen dos implementaciones comunes:

1. ResourceBundleMessageSource: Ideal para archivos de propiedades dentro del classpath. Requiere reiniciar la aplicación si se modfiican los archivos.

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource source = new ResourceBundleMessageSource();
    source.setBasename("i18n/mensajes");
    source.setDefaultEncoding("UTF-8");
    return source;
}

2. ReloadableResourceBundleMessageSource: Permite recargar los archivos de configuración en caliente sin reiniciar el servidor.

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();
    source.setBasename("classpath:idiomas/textos_interfaz");
    source.setCacheSeconds(15);
    return source;
}

Uso en la interfaz de usuario

Una vez configurado, supongamos que tenemos un archivo llamado mensajes.properties con la clave sitio.bienvenida = Bienvenido a nuestra plataforma. En el JSP se invoca de la siguiente manera:

<h1>
    <spring:message code="sitio.bienvenida" />
</h1>

Control de rnederizado con <spring:escapeBody>

En HTML, ciertos caracteres como < y > son interpretados por el navegador como etiquetas. Si el objetivo es mostrar el código fuente literal en lugar de renderizarlo, se utiliza <spring:escapeBody>.

A continuación, se muestra una comparación entre el uso manual de entidades HTML y el uso de la etiqueta de Spring:

<!-- Opción manual: poco legible y propensa a errores -->
<p>&lt;div&gt;Este es un div literal&lt;/div&gt;</p>

<!-- Opción con Spring: más limpia y mantenible -->
<p>
    <spring:escapeBody htmlEscape="true">
        <div>Este es un div literal</div>
    </spring:escapeBody>
</p>

El atributo htmlEscape="true" garantiza que cualquier etiqueta dentro del bloque sea convertida a sus entidades correspondientes antes de ser enviada al cliente, permitiendo que el usuario vea el código HTML tal cual fue escrito.

Etiquetas: SpringMVC jsp i18n JavaConfig MessageSource

Publicado el 7-17 09:46