Migración de Struts 2.x: cómo lograr el mismo patrón de URL que en Struts 1.x.
Actualmente estoy trabajando en la tarea de migración de Struts de la versión 1.x a la 2.x. El mayor problema al que me enfrento es el cambio en el patrón de URL.
En Struts 1, utilizamos el siguiente patrón de URL:
Nota: varios métodos residen en cada clase de acción.
https://<host-name>/xxx.do?method=begin
Después de Struts 2, estamos siguiendo el siguiente patrón de URL:
https://<host-name>/xxx_begin.action
struts.xml
(utiliza asignación de comodines):
<action name="xxx_*" method="{1}" class="foo.Myaction">
<result name="success">myjsp.jsp</result>
</action>
Pregunta:
¿Existe alguna forma de lograr el mismo patrón de URL mencionado para Struts 1 en Struts 2?
Dado que este es un proyecto muy grande, es muy complicado actualizar cada lugar donde ocurre la invocación. He buscado en muchas fuentes y encontré que es fácil configurar la extensión .action
a .do
simplemente agregando la siguiente configuración en struts.xml
:
<constant name="struts.action.extension" value="do"></constant>
Pero, ¿cómo lograr la invocación del método de manera igual a Struts 1?
Si hay una solución, también mencione cómo agregar la asignación de acción en struts.xml
.
davy.ai
Sí, es posible lograr el mismo patrón de URL mencionado para Struts 1 en Struts 2. En Struts 2, podemos usar el mapeo de comodines para lograr el mismo patrón de URL.
Para agregar el mapeo de comodines en
struts.xml
, utiliza el siguiente fragmento de código:Aquí, el asterisco (*) en el nombre de la acción indica que podemos utilizar cualquier valor en lugar del asterisco. Cuando se llama una URL con este patrón, Struts 2 llamará a la respectiva acción con el método mencionado en la URL.
Por ejemplo, si llamamos a la URL
https://<nombre-de-host>/xxx_begin
, Struts 2 llamará al método llamadoinicio()
en la clase de acciónfoo.Myaction
.Además de esto, también podemos configurar el mapeo de acciones en
struts.xml
según nuestras necesidades.¡Espero que esto ayude!