2008-12-17 12 views
7

Je dois passer un paramètre d'une action à une autre action, par exemple pour garder trace d'un événement.Struts2 paramètres entre les actions

Quelle est la meilleure façon de faire cela?

Je n'utiliserais pas les paramètres de session. Merci

Répondre

11

En supposant que vous êtes dans une action côté serveur et que vous souhaitez invoquer une autre action avec certains paramètres.

Vous pouvez utiliser le s: balise d'action pour invoquer une autre action, éventuellement avec des paramètres supplémentaires/autres que l'action originale:

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

Vous pouvez également utiliser un type de résultat standard struts-xml avec un paramètre:

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

Si vous voulez un côté client vous rediriger devez envoyer une URL au client avec les paramètres appropriés, et peut-être utiliser un javascript pour y aller.

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

J'ai eu beaucoup de mal à comprendre ceci: ne fonctionne pas dans Struts 2.1.8.1. Après la mise à niveau vers Struts 2.2.1 tout va bien. Je n'ai pas trouvé de note là-dessus. – 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

désolé ?? Devrais-je répondre? S'il vous plaît, ne pas spammer lookin 'pour le score. – Giancarlo

1

utiliser la balise url dans les jambes de force balises de base, l'échantillon est donné ci-dessous:

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

En fait, l'intercepteur de portée et ServletConfig peut être utilisé dans struts2, à vidage automatique du contexte d'action paramètres, (requête/session, etc)

1

En fait, vous allez passer votre valeur de paramètre d'une action d'une action à une autre action.

simplement inclure bean variable avec le même nom. quel paramètre vous allez recevoir en action (action du récepteur).

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

Le paramètre ForwardAction sera transmis à ReceiverAction. tu peux l'utiliser. mais incluez le même nom de bean dans les deux actions. ..

si vous allez recevoir userid dans des moyens de receiveaction,

Cela devrait être dans les deux actions,

private int userid; 

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

public int getUserid(){ 
    return userid; 
} 
Questions connexes