Bonjour à tous,

Forcé d'utiliser ce Framework au boulot, je suis confronté à un problème de configuration de Struts2 pour un projet.
Voila je ne veux rentrer dans le débat JSF vs Struts2 mais je trouve que ce dernier Framework, bien qu'il soit plutôt simple, est un calvaire en terme de configuration et surtout pour trouver de la documentation pour des cas précis.

Voila j'en suis à mon 3ième projet avec cette techno et je suis toujours en train de bidouiller pour que tout marche correctement.

Je m'explique:

J'utilise 5 plugins pour arriver à avoir suffisamment de fonctionnalités intéressantes:
le plugin CDI (Qui me permet enfin d'injecter mes beans service dans mes actions)
le plugin JSON
le plugin Tiles
le plugin Struts2 Jquery (qui me bouffe l’essentiel de mon temps en débogage).
et enfin le plugin Conversation qui m'est extrêmement utile ( cela rappelle beaucoup @ConversationScopped de CDI ).

Ce dernier me rend complètement fou. Je n'arrive pas à le faire fonctionner sans "bidouiller" le fichier struts.xml.

Normalement, la configuration de mon package devrait ressembler à cela:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
<package name="actions" namespace="/actions" extends="struts-default, struts-conversation-default, tiles-default, json-default"/>
Mais l'Interceptor du conversation-plugin n'arrive pas à construire les <sc:url> (s:url contenant l'identifiant de conversation):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
SEVERE: "Servlet.service()" pour la servlet jsp a lancé une exception
java.lang.NullPointerException
	at java.util.HashMap.putAll(Unknown Source)
	at org.apache.struts2.components.Component.addAllParameters(Component.java:461)
blablabla
Le seul moyen de faire fonctionner tout ça (et encore, ça ne fonctionne que pour un seul de mes projets lol) est de redéfinir l'interceptor-stack par defaut:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
	<interceptors>
			<!-- Interceptor perso pour avoir l'utilisateur courant -->
			<interceptor name="authentication"
				class="onet.application.opm.prospection.interceptor.AuthentificationInterceptor"/>
			<interceptor-stack name="authStack">
				<interceptor-ref name="conversation"/>
				<interceptor-ref name="sessionField" />
				<interceptor-ref name="authentication"/>
				<interceptor-ref name="jsonValidationWorkflowStack"/>
				<interceptor-ref name="defaultStack"/>
 
			</interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="authStack"/>
Je voudrais savoir si quelqu'un avait déjà utiliser plusieurs plugin à la fois et comment faire une configuration propre.
Je ne trouve que de la doc pour un plugin spécifique...

Si quelqu'un peut m'aider, je lui serai éternellement reconnaissant!

Merci!