2013-04-08 28 views
5

Ich benötige eine Möglichkeit, mehrere Struts-Aktionen mit einer Anfrage auszuführen. Das Ziel besteht darin, die Anforderung einer Anforderung an den Server zu minimieren. Was ich brauche, ist etwas wie eine "MultiAction", die eine Liste von Aktionen als Parameter erhält, die sie ausführen soll und dann ein "kombiniertes" Ergebnis dieser Aktionen zurückgibt.Mehrere Aktionen nacheinander ausführen

Zum Beispiel:

  • Der Kunde ist
  • vom Server
  • Ein Modul benötigt, um Informationen in einer Vielzahl von Modulen aufgeteilt
  • Es gibt einen Proxy auf dem Client Umgang mit dieser Anfrage
  • Dieser Proxy geht jetzt und sagt: "Hey, du andere Module, ich werde eine Anfrage an den Server stellen, brauchst du irgendwas?"
  • Die anderen Module können nun optional eine Anfrage an den Proxy-
  • Dann Datei die tatsächliche „kombinierten“ Anfrage an den Server ausgelöst wird, und das Ergebnis wird wieder aufgeteilt und an die Module gegeben, der sie angefordert

Also meine Fragen sind:

  1. Gibt es einen Standard Weg in Struts2 wie so etwas zu tun?
  2. Gibt es eine "öffentliche" Standardmethode, eine andere Aktion manuell aufzurufen und ihre Ergebnisse vom Wert Stack abzurufen?
+0

Können Sie ein reales Grundbeispiel dafür erstellen? –

+3

Es gibt Action Chaining, fast immer eine schlechte Idee. Es gibt das Actonj-Tag wie erwähnt.Das heißt, es fällt mir schwer, mir vorzustellen, wo das nützlich wäre - es scheint, als ob man zu viel Verhalten von der falschen Stelle verlangt hat. –

Antwort

0

Anfragen> Aktion 1> Aktion 2> Antwort In Struts 2, kann dies durch Ketten Ergebnis erzielt werden. Das Kettenergebnis ist ein Ergebnistyp, der eine Aktion mit einem eigenen Interzeptorstapel und Ergebnis aufruft. Dieser Interceptor ermöglicht einer Aktion, Anforderungen an eine Zielaktion weiterzuleiten, während der Status der Quellaktion weitergegeben wird. Im Folgenden finden Sie ein Beispiel für die Definition dieser Sequenz.

Im obigen Code definieren wir drei Aktionen: createUserAccount, login und showDashboard. Beachten Sie, wie jede Aktion mit dem nächsten über ein Tag verkettet wird. Wenn sich der Benutzer zum ersten Mal im System anmeldet, wird die createAccount-Aktion verwendet. Sobald der Account erstellt wurde, wird der Benutzer zur Login-Aktion weitergeleitet.

0

Gut. Es ist sehr möglich, einen einfachen Struts-Ergebnistyp zu verwenden. Um mehrere Aktionen in einer einzigen Aktion zu verarbeiten, können Sie in Ihrer Ergebniseigenschaft <result name="success" type="redirectAction"></result> verwenden. Mit diesen mehreren Aktionen können Sie auch eine Anzahl von Parametern übergeben, indem Sie <param> Eigenschaft struts.xml. Beispielcode finden Sie für Ihre Referenz: -

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

Dies kann durch Verwendung von „redirectAction“ in Ergebnistyp erreicht werden. folgender Code ist das Beispiel dafür. Sie müssen das Action-Tag in XML-Struts gemäß Ihren Anforderungen für die Verwendung verschachtelter Aktionen konfigurieren.

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