2011-02-10 14 views
12

¿Puedo redirigir a otra acción desde una acción de struts? Así, el resultado de una acción es otra acción es decir - que aquí es un fragmento de struts.xmlAcción de redirección en struts.xml

<action name="newRedirect" > 
     <result>formsearch</result> 
    </action> 

    <action name="formsearch" class="com.event.action.SearchForm" 
    method="execute"> 
     <result name="success">/form.jsp</result> 
    </action> 

Gracias

Respuesta

21

Sí. Puedes redirigir y puedes encadenar. El redireccionamiento comienza desde cero, es como si llamaras a la otra acción por primera vez mientras que la cadena mantiene los valores en la pila de valores y agrega las variables de la nueva acción.

Para reenviar:

<action name="newRedirect" > 
    <result type="redirect">/formsearch.action</result> 
</action> 

Para la cadena:

<action name="newRedirect" > 
    <result type="chain">formsearch</result> 
</action> 

Para comodidad del tipo de resultado de redirección se puede cambiar a un "redirectAction" tipo de resultado ... lo que nos permite escribir:

<action name="newRedirect" > 
    <result type="redirectAction">formsearch</result> 
</action> 

Este último es probablemente lo que usted quiere.

Ahora una advertencia, la redirección de encadenamiento/acción está allí con la instrucción "goto". No malvado pero fácil de abusar, probablemente deberías buscar mover la lógica decisiva (la lógica que determina qué acción llamar a varios a un interceptor) o si la lógica está principalmente relacionada con la configuración, entonces algún tipo de clase de utilidad invocada por el acciones preparan el método (o directamente en el método de preparación) ... Si la acción necesita parámetros antes de llamar a la preparación, entonces use paramsPrepareParamsStack.

+0

gracias un millón –

Cuestiones relacionadas