es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    <action name="xxx_*" class="foo.Myaction" method="{1}">
        <result name="success">myjsp.jsp</result>
    </action>
    

    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 llamado inicio() en la clase de acción foo.Myaction.

    Además de esto, también podemos configurar el mapeo de acciones en struts.xml según nuestras necesidades.

    ¡Espero que esto ayude!

Comments are closed.