26/01/2014
El tip de hoy es el más sencillo hasta la fecha y simplemente pretende recopilar unos pequeños snippets para generar enlaces en JSP (para probarlo se puede utilizar cualquier aplicación Struts 2). Por ejemplo, a la hora de generar url’s relativas en nuestra aplicación la solución recomendada consiste en usar de forma combinada las etiquetas s:url y s:a. Con la primera se generará la url que se utilizará en la segunda etiqueta que es la que renderiza el enlace en HTML; también se puede utilizar esta etiqueta para proporcionar una url a cualquier elemento web como las etiquetas a, img, etc, o javascript. Veamos unos ejemplos de url:
- Generar una url relativa a un recurso de nuestra aplicación.
<link rel="shortcut icon" href='<s:url value="/favicon.ico"/>' /> <link type="text/css" rel="stylesheet" href="<s:url value='/css/styles.css'/>" />
- Generar una url absoluta. Esto no suele ser necesario puesto que la etiqueta simplemente devuelve la url indicada.
<a href="<s:url value='http://danielme.com' />">danielme.com</a>
- Generar la url correspondiente a un action.
<a href="<s:url action="home.action" />">home</a>
- Generar la url correspondiente a un action con parámetros.
<s:url action="mainAction"> <s:param name="param1">valor1</s:param> <s:param name="param2"><s:property value="parametroDos"/></s:param> </s:url>
De forma más abreviada usando sólo la etiqueta s:param
<s:url action="mainAction"> <s:param name="param1">valor1</s:param> <s:param name="param2" value="%{parametroDos}"/> </s:url>
Para poder utilizar las url generadas anteriormente en una etiqueta s:a es necesario definir su atributo var o id(este último está deprecated) para poder recuperar su valor desde el ValueStack. Por ejemplo:
<s:url var="en" action="mainAction"> <s:param name="request_locale">en</s:param> </s:url> <s:a href="%{en}"><s:text name="en" /></s:a>