Vamos a ver como se organiza internamente a nivle de rutas y a nivel de contexto una aplicacion en Struts2.
Como siempre en aplicaciones JEE, las configuraciones no son nada intuitivas, y nos conviene preguntar a el sabelotodo Google sobre la cuestion de como es la estructura de un proyecto JEE. En este punto hay que tener cuidado con la sobreinformación y qué debemos elegir.
Yo no voy a entrar a discutirlo, si no a ver qué podemos encontrarnos y como se traduce.
1. Introdución
Partimos de los posts anteriores (Struts2 - construyendo la aplicacion).
Lo habíamos dejado en la parte que añadíamos las Anotaciones, y también habíamos visto que es lo mismo que usar el XML.
2. ¿De qué hablamos?
Vale más una imagen que mil palabras que decía aquel.
Conceptos a entender:
- Servlet Context: aunque me podéis arrear pero bien, pero vamos a decir que es el "nombre de la app", realmente no, pero para que nos entendamos.
- namespace: Lo definimos nosotros, y nos permite tener una cierta lógica y orden en la url en sí misma.
- Struts Action: pues eso.
3. ¿Cómo se traduce?
Pues de la siguiente manera:
@Namespaces(value={@Namespace("/User")}) @Result(location="/User/login.jsp") @Actions(value={@Action(""),@Action("home")})
El namespace lo definimos nosotros, y nos definirá la manera de "llamar" a la url.
Vemos que ahora ponemos el @Result, y diremos: "aaahhhh claro! Coincide", pues sí y no.
Sí coincide, pero uno referencia al Disco y otro a la URL.
¿Y pueden coincidir?
Pues también sí y no.
*"Jose nos está liando".
Pues sí puede coincidir, siempre que sigamos la convención de Struts2 y coloquemos todo bajo:
“WEB-INF/content/”.
¿Y entonces ...? Mi aplicación no la quiero ahí
Pues el workaround que te puedo decir que en mi caso funciona es:
import org.apache.struts2.convention.annotation.Result;
@ResultPath
@Namespaces(value={@Namespace("/User")}) @ResultPath(value="/") @Result(location="login.jsp") @Actions(value={@Action(""),@Action("home")}) public class HomeAction extends ActionSupport{ }
Y ahora sí. Ya tenemos la URL como queremos y las carpetas como nos de la gana:
http://localhost:8080/MiAppStruts2/User/home.action
Y si ya sabemos esto, podemos resumirlo, y en el siguiente proyecto ya lo tenemos. Volvemos a nuestro struts.xml, y ponemos este contenido (como estamos usando anotaciones podemos quitar el resto):
1 2 3 4 5 6 7 8 | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.convention.result.path" value="/"></constant> </struts> |
4. ¿Y qué más?
Pues bien, hasta aquí la parte de saber donde se encuentra cada cosa. Como sabemos de lo que más cuesta es sentarnos en nuestro puesto el primer día de proyecto, y saber de qué estamos hablando.
Espero que esto os ayude a localizar rápidamente las cosas.
Y no os olvidéis de hacer commit!
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.