2013-04-08 11 views
5

Ho bisogno di un modo per eseguire più azioni puntate con una richiesta. L'obiettivo è minimizzare la necessità di una richiesta contro il server. Quindi quello di cui ho bisogno è qualcosa come una "MultiAction" che ottiene un elenco di azioni come i suoi parametri che dovrebbe eseguire e quindi restituisce un risultato "combinato" di queste azioni.Esecuzione di più azioni una dopo l'altra

Ad esempio:

  • Il cliente contempla in un sacco di moduli
  • Un modulo ha bisogno di ottenere informazioni dal server
  • C'è un proxy sul client gestire questa richiesta
  • Questo proxy ora dice "Ehi tu altri moduli, ho intenzione di fare un raver al server, hai bisogno di qualcosa?"
  • Gli altri moduli possono opzionalmente presentare una richiesta presso la procura
  • Poi la richiesta effettiva "combinato" è sparato al server e il risultato è di nuovo diviso e dato ai moduli che lo ha richiesto

Quindi le mie domande sono:

  1. C'è un modo standard in Struts2 su come fare qualcosa di simile?
  2. Esiste un modo "pubblico" standard per chiamare manualmente un'altra azione e ottenere i risultati dal valore Stack?
+0

Si può produrre un esempio di base del mondo reale di questo? –

+3

C'è azione concatenata, quasi sempre una cattiva idea. C'è il tag Actonj come accennato.Detto questo, mi sembra difficile immaginare dove sarebbe utile, sembra che tu abbia troppi comportamenti richiesti dal posto sbagliato. –

risposta

0

Richiesta> Azione 1> Azione 2> Risposta In Struts 2, questo può essere realizzato dalla catena dei risultati. Il risultato a catena è un tipo di risultato che richiama un'azione con il proprio stack e risultato dell'intercettore. Questo Interceptor consente ad un'azione di inoltrare richieste ad un'azione di destinazione, mentre si diffonde lo stato dell'azione di origine. Di seguito è riportato un esempio di come definire questa sequenza.

<package name="public" extends="struts-default"> 
      <action name="createUserAccount" 
       class="net.onlineSolution.CreateAccountAction"> 
       <result name="success" type="chain">login</result> 
      </action> 
      <action name="login" 
       class="net.onlineSolution.LoginAction"> 
       <result name="success" type="chain">showDashboard</result> 
      </action> 
      <action name="showDashboard" 
       class="net.onlineSolution.DashboardAction"> 
       <result name="success">/WEB-INF/jsp/dashboard.jsp</result> 
      </action> 
    </package> 

Nel codice di cui sopra definiscono tre azioni: createUserAccount, login e showDashboard. Nota come ogni azione è concatenata alla successiva usando il tag. Pertanto, quando l'utente effettua il login per la prima volta nel sistema, verrà utilizzata l'azione createAccount. Una volta creato l'account, l'utente viene inoltrato all'azione di accesso.

0

Bene. È molto possibile utilizzando un semplice tipo di risultato di puntoni. Per elaborare più azioni in una singola azione, è possibile utilizzare <result name="success" type="redirectAction"></result> nella proprietà result. Con queste azioni multiple puoi anche passare n numero di parametri usando <param> proprietà di struts.xml. A seguito di codice di esempio è per il vostro riferimento: -

<result name="success" type="redirectAction"> 
    <param name="actionName">[.. you can write another action here ..]</param> 
    <param name="[.. parameter name ..]">${.. parameter name ..}</param> 
</result> 
2

Ciò può essere ottenuto utilizzando "redirectAction" nel tipo di risultato. il seguente codice è l'esempio per lo stesso. devi configurare il tag azione in struts XML in base alle tue esigenze di utilizzo di azioni annidate.

 <action name="userHomeAction" class="com.etp.connect.struts.action.UserHomeAction"> 
     <result type="redirectAction" name="SUCCESS_EDIT"> 
      <param name="actionName">getUserEditData</param> 
      <param name="selectedUser">${selectedUser}</param>   
     </result> 
     <result name="error">/jsp/userMgmt/Users_Home.jsp</result> 
     <result name="login">/jsp/loginMgmt/Login.jsp</result> 
    </action> 
Problemi correlati