2011-02-10 2 views
12

Posso reindirizzare a un'altra azione dall'interno di un'azione di puntoni? Così il risultato di un'azione è un altro cioè l'azione - ecco un frammento di struts.xmlAzione reindirizzamento in 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> 

Grazie

risposta

21

Sì. Puoi reindirizzare e puoi concatenare. Il reindirizzamento parte da zero, è come se avessi chiamato l'altra azione per la prima volta mentre la catena mantiene i valori sullo stack di valori e aggiunge le variabili della nuova azione.

Per inoltrare:

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

Per catena:

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

Per comodità il tipo di risultato redirect può essere cambiato in un "redirectAction" tipo di risultato ... che ci permette di scrivere:

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

Quest'ultimo è probabilmente quello che vuoi.

Ora un avviso, il reindirizzamento concatenamento/azione è lassù con l'istruzione "goto". Non male ma facile da abusare, dovresti probabilmente cercare di spostare la logica decisionale (la logica che determina quale azione chiamare di più a un intercettore) o se la logica è per lo più impostata in relazione a qualche tipo di classe di utilità che viene invocata dal le azioni preparano il metodo (o nel metodo di preparazione a titolo definitivo) ... Se l'azione richiede i parametri prima che venga chiamata la preparazione, utilizzare il parametro paramsPrepareParamsStack.

+0

grazie un milione –