2010-11-05 20 views
0

Je suis en train de mettre à niveau une application struts2 à partir de Struts version 2.1.6 à 2.1.8. J'ai la balise submit suivante avec l'attribut method, qui a cessé de fonctionner depuis la mise à niveau.La balise de soumission Struts2 ne fonctionne pas dans struts2.1.8 avec l'attribut de méthode

<s:form action="xyzDetail_save" theme="simple"> 

<s:submit method="addxyz" value="%{getText('button.add1')}" /> 

D'autres bibliothèques de struts sont utilisées comme struts-dojo, struts-tiles. Est-ce que quelqu'un a une idée pourquoi cela ne fonctionnerait pas? Ou pouvez-vous me laisser une idée de l'intercepteur que je devrais déboguer pour aller au fond du problème? Merci

+0

Il semblerait que vous n'ayez pas échappé correctement à votre exemple de code. Souhaitez-vous éditer votre question et suivre ce guide pour le formatage: http://stackoverflow.com/editing-help Aussi, quand vous dites que le bouton de soumission ne fonctionne pas, que voulez-vous dire? Avez-vous une exception? Est-ce que ça ne fait rien du tout? –

+0

Il ne lance aucune exception, mais passe à la méthode par défaut pour l'action de formulaire (en ignorant l'attribut de méthode défini dans la balise submit). C'est l'ancien code que je suis en train de déboguer et de mettre à jour vers 2.1.8 (à partir de 2.1.6). –

+0

Pourriez-vous essayer ce qui se passe sur la version 2.2.1? –

Répondre

1

Essayez de mettre DMI à true dans votre struts.xml (notez que DMI est extrémement déconseillée pour des raisons de sécurité)

<constant name="struts.enable.DynamicMethodInvocation" value="true" /> 
+0

Cela ne fonctionne pas. –

0

Vous devriez jeter un oeil à org.apache.struts2.dispatcher.mapper .DefaultActionMapper, méthode parseActionName. Comme je vous l'ai déjà dit et comme vous le verrez, vous devez définir StrutsConstants.STRUTS_ENABLE_DYNAMIC_METHOD_INVOCATION sur true.

+0

Je pense que c'est un bug d'infrastructure. Fonctionne bien dans 2.1.6, mais pas dans 2.1.8. Dans 2.1.8, findActionMapping de dofilter dans StrutsPrepareAndExecuteFilter ne trouve pas le mappage et le mappage par défaut pour le formulaire d'action est en cours d'exécution. –