Bonjour,

J'ai un écran sous Struts 2 dans lequel je souhaite avoir des onglets. J'utilise pour cela le composant sx:tabbedpanel de dojo qui me permet de charger l'onglet sélectionné en Ajax. Lorsque je clique sur Ecran 1 ou Ecran 2 les actions Struts ne sont pas declenchées. Mais lorsque j'affiche la JSP coorespondant à ecranPrincipal.jsp, chacune des actions Struts sont executées les unes après les autres.

mapping Struts :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<filter>
    	<filter-name>struts2</filter-name>
    	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
 
<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
struts.xml :

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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
 
<?xml version="1.0" encoding="UTF-8" ?>
 
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<constant name="struts.devMode" value="false" />
	<constant name="struts.action.extension" value="do" />
	<constant name="struts.custom.i18n.resources"
		value="com.omb.i18n.StrutsResourceBundle" />
	<constant name="struts.objectFactory" value="spring" />
	<constant name="struts.objectFactory.spring.autoWire" value="name" />
	<constant name="struts.i18n.encoding" value="ISO-8859-1" />
	<constant name="struts.i18n.reload" value="false" />
	<constant name="struts.configuration.xml.reload" value="false" />
	<constant name="struts.locale" value="fr" />
	<constant name="struts.multipart.maxSize" value="100000000000" />
	<constant name="struts.enable.SlashesInActionNames" value="true" />
    <constant name="struts.mapper.alwaysSelectFullNamespace" value="false"/>
 
    <constant name="struts.codebehind.classSuffix" value="Controller"/>
	<constant name="struts.codebehind.action.checkImplementsAction" value="false"/>
	<constant name="struts.codebehind.action.checkAnnotation" value="false"/>
	<constant name="struts.codebehind.action.defaultMethodName" value="index"/>
	<constant name="struts.configuration.classpath.defaultParentPackage" value="rest-default" />
 
	<package name="default" extends="tiles-default" namespace="/">
 
		<interceptors>
			<interceptor name="userAware"
				class="com.omb.interceptor.UserInterceptor" />
 
			<interceptor name="params-filter"
				class="com.opensymphony.xwork2.interceptor.ParameterFilterInterceptor" />
 
			<interceptor-stack name="defaultStack">
				<interceptor-ref name="exception" />
				<interceptor-ref name="alias" />
				<interceptor-ref name="servletConfig" />
				<interceptor-ref name="i18n" />
				<interceptor-ref name="chain" />
				<interceptor-ref name="modelDriven" />
				<interceptor-ref name="fileUpload">
					<param name="maximumSize">11204928</param>
				</interceptor-ref>
				<interceptor-ref name="staticParams" />
				<interceptor-ref name="conversionError" />
				<interceptor-ref name="params" />
				<interceptor-ref name="prepare" />
				<interceptor-ref name="validation" />
				<interceptor-ref name="workflow" />
				<interceptor-ref name="userAware" />
 
			</interceptor-stack>
 
		</interceptors>
 
		<default-interceptor-ref name="defaultStack" />
 
		<global-results>
			<result name="technicalError" type="chain">
				errorAction
			</result>
			<result name="sessionInvalidError" type="tiles">
				sessionInvalid
			</result>
			<result name="blank" type="tiles">blank</result>
		</global-results>
 
		<global-exception-mappings>
			<exception-mapping exception="java.lang.Exception"
				result="technicalError" />
		</global-exception-mappings>
 
		<action name="errorAction"
			class="com.omb.ErrorAction">
			<result name="success" type="tiles">errorTile</result>
		</action>
 
		<action name="*Cache"
			class="com.omb.CacheAction" method="{1}">
			<result name="success" type="tiles">resultCache</result>
			<result name="input" type="tiles">inputCache</result>
		</action>
 
	</package>
 
	<package name="omb" extends="default" namespace="/omb">
		<action name="*Action"
			class="com.omb.MyAction"
			method="{1}">
			<result name="ecran1">/jsp/omb/ecran1.jsp</result>
			<result name="ecran2">/jsp/omb/ecran2.jsp</result>
		</action>
	</package>
</struts>
ecranPrincipal.jsp :
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
16
17
18
19
 
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
 
<s:url id="urlAccueil" value="/jsp/omb/ecranAccueil.jsp"/>
<s:url id="urlEcran1" namespace="/omb" 
	action="ecran1Action.do" includeParams="false" />
<s:url id="urlEcran2" namespace="/omb"
	action="ecran2Action.do" includeParams="false" />
 
<div class="content">
 
    <sx:tabbedpanel id="tabContainer">
		<sx:div id="ongletWelcome" label="Accueil" href="%{urlAccueil}"/>
		<sx:div id="ongletDelegation" label="Ecran 1" href="%{urlEcran1}" />
		<sx:div id="ongletValidation" label="Ecran 2" href="%{urlEcran2}" />
    </sx:tabbedpanel>
 
</div>