martes, 13 de septiembre de 2011

Cambiar el título de una página con Wicket

Si has utilizado Wicket, te habrás dado cuenta de que el título de la página no se puede modificar de la misma forma que se hace con otros componentes. Un componente normal, por ejemplo el contenido de un <span>, lo pondríamos de la siguiente manera para que fuera configurable e internacionalizable i18n:
<span><wicket:message key="content">Default Content</wicket:message></span>
Poniendo la propiedad "content" dentro del archivo de propiedades, tendremos nuestro <span> internacionalizado sin ningún problema.

Pero esta fórmula no aplica al título de la cabecera de la página, de manera que si ponemos:
<!DOCTYPE html>
<html>
 <head>
   <title><wicket:message key="page.title"></wicket:message></title>
 </head>
 ...
</html>
lo único que conseguiremos es que el título de la página diga "<wicket:message key="page.title"></wicket:message>"

La solución es ponerlo como un componente de wicket e inicializarlo desde Java. El archivo html de markup quedaría así:
<!DOCTYPE html>
<html>
 <head>
   <title wicket:id="window.title">Default title</title></title>
 </head>
 ...
</html>

Y desde el archivo java correspondiente lo inicializaremos de la siguiente manera:
add(new Label("window.title", new StringResourceModel("window.title", null))); 
de manera que el título de la página se cogerá del archivo de propiedades de la key "window.title"