Bonjour les gens!
J'ai un soucis lors de l'utilisation de <a4j:commandButton>. J'ai, dans ma page jsf, le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<a4j:commandButton data="#{rechercheAction.recherche()}" 
            			id="quickSearch"
            			oncomplete="if (data != -1) { document.location.href = ('#{facesContext.externalContext.requestContextPath}/page?id=' + data); } else { refreshMessages(); } " 
            			style="display:none" type="submit" reRender="messages" immediate="true" >
                        </a4j:commandButton>
rechercheAction retourne une valeur de type int. Et pourtant, dès que j'utilise la chose, ma concole est innondée de revendications quasi syndicales affirmant que
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
98
 
11:32:41,371 ERROR [SeamPhaseListener] uncaught exception
org.jboss.seam.InstantiationException: Could not instantiate Seam component: myAction
	at org.jboss.seam.Component.newInstance(Component.java:1986)
	at org.jboss.seam.Component.getInstance(Component.java:1876)
	at org.jboss.seam.Component.getInstance(Component.java:1843)
	at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55)
	at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50)
	at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:166)
	at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:53)
	at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
	at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
	at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
	at org.jboss.el.parser.AstValue.getTarget(AstValue.java:34)
	at org.jboss.el.parser.AstValue.invoke(AstValue.java:95)
	at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:173)
	at org.jboss.seam.navigation.Page.preRender(Page.java:264)
	at org.jboss.seam.navigation.Pages.preRender(Pages.java:316)
	at org.jboss.seam.jsf.SeamPhaseListener.preRenderPage(SeamPhaseListener.java:560)
	at org.jboss.seam.jsf.SeamPhaseListener.beforeRenderResponse(SeamPhaseListener.java:471)
	at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:144)
	at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:114)
	at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:214)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:96)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
	at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:68)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:85)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
	at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:60)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Thread.java:595)
Caused by: javax.faces.convert.ConverterException: la valeur doit être un nombre
	at javax.faces.convert.IntegerConverter.getAsObject(IntegerConverter.java:118)
	at org.jboss.seam.faces.Parameters.convertRequestParameter(Parameters.java:48)
	at org.jboss.seam.web.Parameters.convertMultiValueRequestParameter(Parameters.java:74)
	at org.jboss.seam.Component.injectParameters(Component.java:1454)
	at org.jboss.seam.Component.inject(Component.java:1421)
	at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:45)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.persistence.ManagedEntityIdentityInterceptor.aroundInvoke(ManagedEntityIdentityInterceptor.java:48)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42)
	at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
	at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
	at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)
	at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102)
	at com.monceauassurances.monceaunet.front.client.action.Ecr_Cli_2_$$_javassist_30.create(Ecr_Cli_2_$$_javassist_30.java)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
	at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:125)
	at org.jboss.seam.Component.callComponentMethod(Component.java:2092)
	at org.jboss.seam.Component.callCreateMethod(Component.java:2015)
	at org.jboss.seam.Component.newInstance(Component.java:1976)
	... 66 more

C'est surtout
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Caused by: javax.faces.convert.ConverterException: la valeur doit être un nombre
qui m'interpelle, je peux me tromper.

A force de chercher, je pense que j'ai fini par isoler la source du problème, qui semble être l'attribut data. si je remplace
Code : Sélectionner tout - Visualiser dans une fenêtre à part
oncomplete="if (data != -1) { document.location.href = ('#{facesContext.externalContext.requestContextPath}/client/Ecr_Cli_2.seam?idClient=' + data); } else { refreshMessages(); } "
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
oncomplete="if (data != -1) { document.location.href = ('#{facesContext.externalContext.requestContextPath}/client/Ecr_Cli_2.seam?idClient=' + 1); } else { refreshMessages(); } "
alors ça fonctionne.

Quelqu'un pourait-il me faire une suggestion pour régler le problème? Et éventuellement m'expliquer ce qui se passe, je serais curieux de savoir pourquoi data me transforme un int en (je suppose) une string.

Merci d'avance.