2010-06-18 8 views
0

J'ai un paquet par défaut w/an configure intercepteur, et je suis l'extension de ce paquet dans un autre et d'appeler le même intercepteursEn utilisant un intercepteur étendu dans struts2 ne fonctionne pas avec/l'action des paramètres

<action name="availability**"> 
      <param name="subTab">availability</param> 
      <interceptor-ref name="tabStack"/>   
      <result>/WEB-INF/jsp/index.jsp?include=visibilit/availability.jsp</result>      
     </action> 

Le problème est que le pARAM est pas lu dans mon code Interceptor:

Map params = invocation.getInvocationContext().getParameters(); 
subTab = params.get("subTab").toString(); //NULL exception 

Toute idée comment je peux passer des paramètres à intercepteurs étendus?

Merci!

Répondre

0

La méthode getParameters() que vous appelez ne renvoie les paramètres de la requête HTTP. Les paramètres définis dans struts.xml sont appelés des « paramètres statiques », et vous pouvez y accéder (dans la méthode d'interception()) comme ceci:

ActionConfig config = invocation.getProxy().getConfig(); 
Map<String, String> parameters = config.getParams(); 
String subTab = params.get("subTab"); 

Source: StaticParametersInterceptor.java

+0

Merci Todd. Mon code fonctionne correctement et extrait les paramètres statiques. Mon problème était que je plaçais la tabstack avant la defaultstack dans ma pile def, et que struts ne peuplait pas la carte params. Bravo – Ricardo

+0

Oui, l'intercepteur staticParams ajoutera par défaut les paramètres statiques à la carte des paramètres de la requête. Mais si vous utilisez cette méthode pour accéder aux paramètres, vous devez savoir que l'utilisateur peut les remplacer en ajoutant "? SubTab = xyzzy" à la fin de l'URL. Les paramètres de requête ont la priorité sur les paramètres statiques, sauf si "override" est défini sur l'intercepteur staticParams. –

0

Pouvez-vous essayer cette syntaxe

<action name="availability**"> 
<interceptor-ref name="tabStack"> 
    <param name="subTab">availability</param> 
</interceptor-ref> 
</action> 

Je ne sais pas, mais peut-être cela va fonctionner

+0

essayé et ne fonctionne pas, Je pense que c'est un bug (ou une caractéristique inattendue) sur struts2 – Ricardo

+0

La chose amusante est que si je déclare l'intercepteur à l'intérieur du paquet, alors ça marche;) – Ricardo

+0

Peut-être pouvons-nous définir le paramètre au moment de la déclaration Interceptor –

Questions connexes