2010-07-20 3 views
0

J'utilise struts2.1.8. Ici, je veux gérer la double soumission. truts2 fournit TokenInterceptor. Donc, si j'ai soumis deux fois, il renvoie "invalid.token" comme nom de résultat. Mais je veux afficher la même page à partir de laquelle j'ai soumis deux fois.struts2 double soumettre problème

Répondre

2

Puisque vous voulez pour afficher la même page que celle que vous avez soumise, vous devez créer un résultat invalid.token dans chacune des définitions <action> que vous essayez d'empêcher la double soumission de:

<action name="some-action" class="foo.Bar"> 
    <interceptor-ref name="token"/> 
    <result name="success">/WEB-INF/some/action/success.jsp</result> 
    <result name="invalid.token">/WEB-INF/some/action/input.jsp</result> 
</action> 

The docs fournir plus d'informations et vous pouvez également envisager de regarder dans le Token Session Interceptor.

1

Regardez le TokenSessionInterceptor, qui se base sur le TokenInterceptor. A partir de la documentation:

Contrairement à l'intercepteur jeton normal intercepteur tentera de fournir intelligente fail-over en cas de multiples demandes en utilisant la même session . Autrement dit, il va bloquer les requêtes suivantes jusqu'à ce que la première demande est complète, puis au lieu de retourner le code invalid.token, , il tentera d'afficher la même réponse que l'original, valide invocation d'action aurait affiché si aucune demande multiple n'a été soumise en premier lieu.