2012-06-08 15 views
7

estoy usando Struts2. Tengo un cuadro de diálogo con una lista de personas que se actualiza a través de la acción "search_users". Al lado de esta lista, tengo un formulario que puede usar para agregar a otra persona llamando a la acción "add_user" cuando se envía el formulario.¿Por qué no puedo redirigir una acción a otra acción en Struts2?

Lo que intento hacer es que, una vez que se realiza la acción add_user, la lista se actualiza con la acción "search_user".

He intentado utilizar el tipo de resultado "redirigir" en el struts.xml así:

<action name="search_users" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLSubequipo" method="searchUsers"> 
      <result name="success">list.jsp</result> 
     </action> 

     <action name="add_user" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLTipoEntregable" method="addUser"> 
      <result name="success" type="redirectAction">search_users</result> 
     </action> 

Pero eso no funciona. ¿Qué estoy haciendo mal? ¿Hay algo que deba agregar al archivo struts.xml del que no tengo conocimiento?

Este es el error que consigo mesage:

"Caused by: There is no result type defined for type 'redirect-action' mapped with name 'success'. Did you mean 'redirectAction'? - result - file:/.../struts.xml:59:44 
    at ..." 
+0

Al iniciar Struts2.1x o algo similar redirect-action se cambió a cameling como redirectAction, ¿cuál es el problema al usar redirectAction ?, ¿qué versión de S2 estás usando? – mprabhat

+0

La versión es 2.3.1.2. El problema es que el proyecto no se compilará debido al archivo struts.xml defectuoso. El mensaje de error muestra un poco más de detalle. –

+0

para 2.3.1.2 redirectAction es el correcto – mprabhat

Respuesta

12

Configuración actual:

<action name="add_user" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLTipoEntregable" method="addUser"> 
    <result name="success" type="redirectAction">search_users</result> 
</action> 

Según el documentation formato correcto es:

<action name="add_user" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLTipoEntregable" method="addUser"> 
    <result type="redirectAction"> 
     <param name="actionName">search_users</param> 
     <!--<param name="namespace">/secure</param> This is optional if your action where you are redirecting is in the same namespace you can leave this, if your action is in some other name space then provide the namespace--> 
    </result> 
</action> 
+0

¡Gracias! Eso resolvió mi problema. Lo intenté de esa manera, pero luego incluí el parámetro del paquete a pesar de que ambos pertenecen al mismo paquete. Aprecio la ayuda. –

+0

muy contento de ser de ayuda :) – mprabhat

+1

¿Cómo les dices que vas a redirigir en ÉXITO? – Madrugada

0

No soy un tipo grande Struts, pero basándose en la documentación parece que su redirección no está sintácticamente correcta: http://struts.apache.org/2.1.6/docs/redirect-action-result.html

<package name="public" extends="struts-default"> 
    <action name="login" class="..."> 
     <!-- Redirect to another namespace --> 
     <result type="redirect-action"> 
      <param name="actionName">dashboard</param> 
      <param name="namespace">/secure</param> 
     </result> 
    </action> 
</package> 
+0

Gracias, acabo de intentarlo, pero tampoco funcionó. Editaré la publicación y agregaré el mensaje de error. –

+3

redirect-action era para versiones anteriores de Struts2, las versiones más nuevas usan redirectAction (cambio en la convención de separar palabras). De lo contrario, tu ejemplo debería funcionar bien. –

2

Actualmente el uso de puntales 2.3.20, esto funciona:

<result type="redirectAction">myAction</result> 

no he confirmado en las versiones anteriores.

Cuestiones relacionadas