2008-12-17 9 views
7

Muszę przekazać jakiś parametr z akcji do innej akcji, na przykład, aby zachować ślad zdarzenia.Parametry Struts2 między akcjami

Jaki jest najlepszy sposób na zrobienie tego?

Nie użyłbym parametrów sesji. Dzięki

Odpowiedz

11

Zakładając, że jesteś w pobliżu jednej akcji i chcesz wywołać inną akcję z pewnymi parametrami.

Można użyć s: tag działania, aby wywołać kolejną akcję, ewentualnie z dodatkowych/innych parametrach niż oryginalnego działania:

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

Można również użyć standardowego rozpórki-xml typ wynik z parametrem:

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

Jeśli chcesz przekierować stronie klienta trzeba wysłać link z powrotem do klienta z odpowiednimi parametrami, i może korzystać z niektórych javascript, aby tam pojechać.

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

miałem wiele kłopotów zastanawianie to uwagę: nie działa w Struts 2.1.8.1. Po uaktualnieniu do Struts 2.2.1 wszystko jest w porządku. Nigdzie nie znalazłem nuty. – 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

przepraszam ?? powinienem odpowiedzieć? proszę, nie spamuj, szukając wyniku. – Giancarlo

1

Zastosowanie url tag w znacznikach rozpórki rdzeniowych, próbka jest podany poniżej:

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

faktycznie, zakres i ServletConfig Interceptor mogą być wykorzystane w Struts2, do automatycznego pop kontekstowego akcja parametry, (żądanie/sesja, itp.)

1

Właściwie masz zamiar przekazać jedną wartość parametru działania z jednej akcji do drugiej.

zawiera po prostu zmienną fasoli o tej samej nazwie. który parametr otrzymasz w akcji (akcja odbiorcy).

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

Parametr ForwardAction zostanie przekazany do funkcji ReceiverAction. możesz tego użyć. , ale uwzględnij tę samą nazwę fasoli w obu działaniach. ..

jeśli idziesz do odbioru identyfikatora w drodze receiveaction,

ten powinien być w obu sprawach,

private int userid; 

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

public int getUserid(){ 
    return userid; 
}