2012-06-08 10 views
7

sto usando Struts2. Ho una finestra di dialogo con un elenco di persone che viene aggiornato tramite l'azione "search_users". Accanto a questo elenco ho un modulo che puoi usare per aggiungere un'altra persona chiamando l'azione "add_user" quando il modulo viene inviato.Perché non posso reindirizzare un'azione a un'altra azione in Struts2?

Quello che sto cercando di fare è che, una volta eseguita l'azione add_user, l'elenco viene aggiornato usando l'azione "search_user".

Ho provato ad utilizzare il tipo di risultato "redirect" nel struts.xml come questo:

<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> 

Ma questo non funziona. Che cosa sto facendo di sbagliato? C'è qualcosa che dovrei aggiungere al file struts.xml di cui non sono a conoscenza?

Questa è la mesage errore che ottengo:

"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

L'avvio di Struts2.1x o qualcosa di simile, il redirect-action è stato modificato in camel come redirectAction, qual è il problema che hai ottenuto utilizzando redirectAction?, Anche quale versione di S2 stai usando? – mprabhat

+0

La versione è 2.3.1.2. Il problema è che il progetto non verrà compilato a causa del file struts.xml difettoso. Il messaggio di errore mostra un po 'più di dettagli. –

+0

per 2.3.1.2 redirectAction è quello corretto – mprabhat

risposta

12

Configurazione attuale:

<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> 

Come da documentation formato corretto è:

<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

Grazie! Questo ha risolto il mio problema. Ho provato in questo modo, ma poi ho incluso il parametro del pacchetto anche se entrambi appartengono allo stesso pacchetto. Apprezzo l'aiuto. –

+0

grande piacere di essere di aiuto :) – mprabhat

+1

Come gli dici che vai a reindirizzare su SUCCESSO? – Madrugada

0

io non sono un grande Struts ragazzo, ma sulla base della documentazione sembra che il tuo reindirizzamento non è sintatticamente corretto: 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

Grazie, l'ho appena provato ma non ha funzionato neanche. Modificherò il post e aggiungerò il messaggio di errore. –

+3

redirect-action era per le versioni precedenti di Struts2, le versioni più recenti utilizzano redirectAction (modifica della convenzione di separazione delle parole). Altrimenti, il tuo esempio dovrebbe funzionare bene. –

2

Attualmente utilizzando Struts 2.3.20, questo funziona:

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

non ho confermato nelle versioni precedenti.

Problemi correlati