2008-12-17 6 views
7

Ich muss einen Parameter von einer Aktion zu einer anderen Aktion übergeben, um zum Beispiel die Verfolgung eines Ereignisses zu behalten.Struts2 Parameter zwischen Aktionen

Was ist der beste Weg, das zu tun?

Ich würde keine Sitzungsparameter verwenden. Danke

Antwort

11

Angenommen, Sie sind innerhalb einer Aktion serverseitig und möchten mit einigen Parametern eine andere Aktion aufrufen.

Sie können das s: Action-Tag eine andere Aktion aufzurufen, möglicherweise mit zusätzlichen/andere Parameter als die ursprüngliche Aktion:

<s:action name="myAction" ignoreContextParams="true" executeResult="true"> 
     <s:param name="foo" value="bar"/> 
    </s:action> 

Sie können auch eine Standard-Streben-xml Ergebnistyp mit einem Parameter verwenden:

<result name="success" type="redirect" > 
     <param name="location">foo.jsp?foo=${bar}</param> 
     <param name="parse">true</param> 
     <param name="encode">true</param> 
</result> 

Wenn Sie eine Client-Seite wollen umleiten Sie haben eine uRL zurück an den Client mit den richtigen Parametern zu senden, und vielleicht einige Javascript, dorthin zu gehen zu verwenden.

 <s:url action="myAction" > 
      <s:param name="foo" value="bar"/> 
     </s:url> 
+0

hatte ich eine Menge Ärger dies herauszufinden: funktioniert nicht in Struts 2.1.8.1. Nach dem Upgrade auf Struts 2.2.1 ist alles in Ordnung. Ich habe nirgends eine Notiz darüber gefunden. – grefab

1
<td> 
    <s:url id="url" action="Logging"> 
     <s:param name="m_userNameInAction"><s:property value="m_userNameInForm"/></s:param> 
    </s:url> 
    <s:a href="%{url}">English</s:a> 
</td> 
+0

Entschuldigung ?? soll ich antworten? bitte, spam nicht nach punkten suchen. – Giancarlo

1

Verwenden-URL-Tag in den Streben Kern-Tags wird die Probe unten angegeben:

   <s:url var="idurl" action="EditEnterprise"> 
        <s:param name="enterpriseId"> 
         <s:property value="enterpriseId" /> 
        </s:param> 
       </s:url> 
0

tatsächlich, der Umfang und ServletConfig Abfangjäger in struts2 genutzt werden, um die automatischen Pop des Handlungskontext Parameter (Anforderung/Sitzung usw.)

1

Tatsächlich werden Sie den Wert eines Aktionswertes von einer Aktion an eine andere Aktion übergeben.

einfach enthalten Bean Variable mit dem gleichen Namen. Welchen Parameter erhalten Sie bei der Aktion (Empfängeraktion)?

<action name="ForwardAction" class="..."> 
     <result name="success" type="chain">ReceiverAction</result> 
</action> 

Der ForwardAction-Parameter wird an ReceiverAction weitergeleitet. du kannst es benutzen. , aber in beiden Aktionen denselben Bean-Namen enthalten. ..

, wenn Sie Benutzer-ID in receiveaction Mittel erhalten werden,

Diese in beiden Aktionen sein sollte,

private int userid; 

public void setUserid(int id){ 
    this.userid = userid; 
} 

public int getUserid(){ 
    return userid; 
}