Bonjour,
Je travaille avec JSF/Myface. Je veux déclencher l'exécution d'une méthode d'un bean quand la valeur d'un champ d'une table de ma base de donnée est changée.
Comment vais je faire?
Version imprimable
Bonjour,
Je travaille avec JSF/Myface. Je veux déclencher l'exécution d'une méthode d'un bean quand la valeur d'un champ d'une table de ma base de donnée est changée.
Comment vais je faire?
Je modifie un peu ma question
Je veux déclencher l'exécution d'une méthode d'un bean quand la valeur d'un champ d'une table de ma base de donnée est changée ou quand un inputText est renseigner.
Comment vais je faire?
Je suppose qu'il faudrait que tu précises comment cette valeur est changée parce que je ne comprends pas ou est le probleme. Tu dois bien avoir une méthode qui modifie ce champ dans ta bdd, donc au moment ou tu appelles cette méthode tu peux également appeler la méthode du bean que tu veux exécuter ?
Pour l'inputText, tu peux vérifier que ton champ est renseigné dans l'action de validation du formulaire et appeler ta méthode à ce moment.
La méthode que je veux exécuter était liée à un bouton de mon interface. Quand un utilisateur clique sur ce bouton c'est à ce moment que la méthode est exécutée et la page suivante est affichée en changeant les booleéns qui sont passés aux attributs rendered.
Maintenant je veux que si la valeur d'un champ d'une de mes tables change ou d'un champ inputText de l'interface change que ma méthode soit déclenchée et que la pages suivante qui auparavant s'affichait quant un utilisateur clique sur le bouton, s'affiche sans l'intervention de l'utilisateur sur le bouton.
Je pense que pour la modification de la valeur de la table tu prends le probleme du mauvais coté. La modification est nécessairement provoquée par une action de l'utilisateur sur l'interface, c'est à ce moment que tu dois exécuter le méthode que tu veux. La comme tu expliques les choses j'ai l'impression que tu veux détecter la modification du champ dans ta bdd, puis remonter l'evenement jusqu'à l'interface, je ne suis pas sur que ça soit faisable.
Sinon, concernant la modification du textInput, de ce que j'ai compris tu veux simplement valider ton formulaire sans avoir à cliquer sur un bouton. Tu peux faire ça en ajax avec par exemple un a4j:support qui appelera la méthode de ton bean selon l'evenement que tu veux (onblur, onchange...)
rushtakn je peux avoir un exemple d'utilisation de a4j:support ? Je ne connais bien ajax.
Salut,
Voila un exemple de a4j:support dans le demo de richfaces :
http://livedemo.exadel.com/richfaces...port&tab=usage
Tu utilises richfaces ? si non il faudra que tu telecharges les jar pour avoir accès à ce tag.
La doc pour a4j:support c'est par ici.
Dans ton cas, ça doit donner un code du genre :
Quand l'utilisateur perdra le focus son ton champs texte, la methode action du bean bean déclaré dans ton faces config sera appelée. Le fonctionnement est le meme que pour le paramètre action d'un commandButton.Code:
1
2
3 <h:inputText value="#{bean.value}"> <a4j:support event="onblur" action="#{bean.action}" /> </h:inputText>
rushtakn j'ai essayé votre code mais cela ne fonctionne pas.
J'ai téléchargé les jar de richfaces(richface-api,richfaces-impl,richfaces-ui) vérsion 3.3.1.
J'utilise Myface 1.2.
Est ce qu'il y a des configurations à faire dans le web.xml?
Bonjour
Y a t il pas quelqu'un qui peut m'aider à utiliser a4j:support?
Bonjour,
Oui, il y a du paramétrage à effectuer dans le fichier web.xml.
Voir http://docs.jboss.org/richfaces/late...GettingStarted
VG
salut,
VirageGroup j'ai effectué la même configuration que celle qui est sur le site que vous m'avez indiqué mais j'ai ces messages d'erreurs:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 type Rapport d'exception message description Le serveur a rencontr� une erreur interne () qui l'a emp�ch� de satisfaire la requ�te. exception java.lang.NullPointerException java.lang.String.startsWith(Unknown Source) java.lang.String.startsWith(Unknown Source) org.ajax4jsf.webapp.WebXml.getFacesResourceKey(WebXml.java:189) org.ajax4jsf.webapp.WebXml.getFacesResourceKey(WebXml.java:222) org.ajax4jsf.resource.InternetResourceService.serviceResource(InternetResourceService.java:139) org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488) note La trace compl�te de la cause m�re de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/6.0.18.
Bon soir à tous je suis revenu. Bonne et heureuse année 2010 à tous.
J'ai toujours des soucie pour l'utilisation d'Ajax4jsf avec Myfaces 1.2.6.
J'ai téléchargé les jar:.Code:richfaces-api-3.3.1.GA.jar ; richfaces-impl-3.3.1.GA.jar ; richfaces-ui-3.3.1.GA.jar
Dans mon web.xml j'ai effectué la configurattion suivante:
.Code:
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 <context-param> <param-name>org.richfaces.SKIN</param-name> <param-value>blueSky</param-value> </context-param> <context-param> <param-name>org.richfaces.CONTROL_SKINNING</param-name> <param-value>enable</param-value> </context-param> <filter> <display-name>Ajax4jsf Filter</display-name> <filter-name>ajax4jsf</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>ajax4jsf</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping>
J'ai les messages d'erreurs suivant quand j'utilise le composant support:.Code:
1
2
3
4
5
6
7 java.lang.NullPointerException at org.apache.catalina.connector.MapperListener.destroy(MapperListener.java:165) at org.apache.catalina.connector.Connector.stop(Connector.java:1179) at org.apache.catalina.core.StandardService.stop(StandardService.java:593) at org.apache.catalina.core.StandardServer.stop(StandardServer.java:744) at org.apache.catalina.startup.Catalina.stop(Catalina.java:628) at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:671)
Quelqu'un peut m'aider?
Salut, et bonne année à toi aussi .
tu as la trace de la cause de l'exception?
ça arrive au démarrage du serveur ou à l'exécution?
ça arrive lors de l'exécution. Quand je tape l'url de l'application. C'est ceci que j'ai
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 type Rapport d'exception message description Le serveur a rencontr� une erreur interne () qui l'a emp�ch� de satisfaire la requ�te. exception java.lang.NullPointerException java.lang.String.startsWith(Unknown Source) java.lang.String.startsWith(Unknown Source) org.ajax4jsf.webapp.WebXml.getFacesResourceKey(WebXml.java:189) org.ajax4jsf.webapp.WebXml.getFacesResourceKey(WebXml.java:222) org.ajax4jsf.resource.InternetResourceService.serviceResource(InternetResourceService.java:139) org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488) note La trace compl�te de la cause m�re de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/6.0.18.
Salut
Quelqu'un peut il m'aider?
Effectivement. L'erreur survient que j'utilise cette balise. Voici ma page jsp. C'était pour un teste
Code:
1
2
3
4
5
6
7
8 <%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%> <h:inputText id="myinput" value="#{depotretraitBean.num_telephone}"> <a4j:support event="onkeyup" reRender="outtext" /> </h:inputText> <h:outputText id="outtext" value="#{depotretraitBean.num_telephone}" />
ce n'est pas le bon lien pour les tag libs a4j:
Code:<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
J'ai changé le tag lib mais j'ai toujours la même erreur.
Voici mon fichier web.xml
Code:
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>mpayement</display-name> <context-param> <param-name>org.apache.myfaces.ERROR_HANDLING</param-name> <param-value>false</param-value> </context-param> <!-- Filtre pour l'utilisation d'ajax --> <context-param> <param-name>org.richfaces.SKIN</param-name> <param-value>blueSky</param-value> </context-param> <context-param> <param-name>org.richfaces.CONTROL_SKINNING</param-name> <param-value>enable</param-value> </context-param> <filter> <display-name>Ajax4jsf Filter</display-name> <filter-name>ajax4jsf</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>ajax4jsf</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <session-config> <session-timeout>1440</session-timeout> </session-config> <!-- Filtre pour l'upload de fichier --> <filter> <filter-name>MyFacesExtensionsFilter</filter-name> <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class> <init-param> <description>Set the size limit for uploaded files. Format: 10 - 10 bytes 10k - 10 KB 10m - 10 MB 1g - 1 GB </description> <param-name>uploadMaxFileSize</param-name> <param-value>100m</param-value> </init-param> </filter> <!-- Filtre pour l'exportation en PDF --> <filter> <filter-name>ResponseOverrideFilter</filter-name> <filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class> </filter> <filter-mapping> <filter-name>ResponseOverrideFilter</filter-name> <url-pattern>*.jsp</url-pattern> <url-pattern>/faces/*</url-pattern> </filter-mapping> <!-- extension mapping for adding <script/>, <link/>, and other resource tags to JSF-pages --> <filter-mapping> <filter-name>MyFacesExtensionsFilter</filter-name> <!-- servlet-name must match the name of your javax.faces.webapp.FacesServlet entry --> <servlet-name>Faces Servlet</servlet-name> </filter-mapping> <!-- extension mapping for serving page-independent resources (javascript, stylesheets, images, etc.) --> <filter-mapping> <filter-name>MyFacesExtensionsFilter</filter-name> <url-pattern>/faces/myFacesExtensionResource/*</url-pattern> </filter-mapping> <!-- ************************* --> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>all</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> <url-pattern>*.jsf</url-pattern> </servlet-mapping> </web-app>
et tu déclare les tags libs JSF :
tu as la suite de l'exception ?Code:
1
2
3
4
5
6
7
8
9 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <!-- RichFaces tag library declaration --> <%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%> <%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
L'erreur persiste.
Voici la trace de l'erreur:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 8 janv. 2010 11:37:19 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: "Servlet.service()" pour la servlet Faces Servlet a g�n�r� une exception java.lang.NullPointerException at java.lang.String.startsWith(Unknown Source) at java.lang.String.startsWith(Unknown Source) at org.ajax4jsf.webapp.WebXml.getFacesResourceKey(WebXml.java:189) at org.ajax4jsf.webapp.WebXml.getFacesResourceKey(WebXml.java:222) at org.ajax4jsf.resource.InternetResourceService.serviceResource(InternetResourceService.java:139) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:508) 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:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
Voici les traces du consol tomcat:
Code:
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 8 janv. 2010 11:57:43 org.apache.tomcat.util.digester.SetPropertiesRule begin ATTENTION: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:mpayment' did not find a matching property. 8 janv. 2010 11:57:43 org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\GNU\GnuPG\pub 8 janv. 2010 11:57:43 org.apache.coyote.http11.Http11Protocol init INFO: Initialisation de Coyote HTTP/1.1 sur http-8080 8 janv. 2010 11:57:43 org.apache.catalina.startup.Catalina load INFO: Initialization processed in 346 ms 8 janv. 2010 11:57:43 org.apache.catalina.core.StandardService start INFO: D�marrage du service Catalina 8 janv. 2010 11:57:43 org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/6.0.18 8 janv. 2010 11:57:43 org.apache.catalina.loader.WebappClassLoader validateJarFile INFO: validateJarFile(C:\Java\RepTravail\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\mpayment\WEB-INF\lib\servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class log4j:WARN No appenders could be found for logger (org.apache.myfaces.shared_impl.webapp.webxml.WebXmlParser). log4j:WARN Please initialize the log4j system properly. 8 janv. 2010 11:57:45 org.apache.coyote.http11.Http11Protocol start INFO: D�marrage de Coyote HTTP/1.1 sur http-8080 8 janv. 2010 11:57:45 org.apache.jk.common.ChannelSocket init INFO: JK: ajp13 listening on /0.0.0.0:8009 8 janv. 2010 11:57:45 org.apache.jk.server.JkMain start INFO: Jk running ID=0 time=0/31 config=null 8 janv. 2010 11:57:46 org.apache.catalina.startup.Catalina start INFO: Server startup in 2664 ms 8 janv. 2010 11:57:46 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: "Servlet.service()" pour la servlet Faces Servlet a g�n�r� une exception java.lang.NullPointerException at java.lang.String.startsWith(Unknown Source) at java.lang.String.startsWith(Unknown Source) at org.ajax4jsf.webapp.WebXml.getFacesResourceKey(WebXml.java:189) at org.ajax4jsf.webapp.WebXml.getFacesResourceKey(WebXml.java:222) at org.ajax4jsf.resource.InternetResourceService.serviceResource(InternetResourceService.java:139) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:508) 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:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
Merci Sniper37 et tous ceux qui m'ont aidé.
J'ai résolu le problème.
Cela était dû par la déclaration des mappings des url.
Si vous utilisez Eclipse ganymede 3.4, quand vous créez un projet dynamique eclipse crée un fichier web.xml dans lequel il met deux url mapping comme suit:
Donc il met dans une seul balis <servlet-mapping>. Alors que richfaces ne supporte pas cette déclaration. Il faut déclarer les url dans deux balise <servlet-mapping> séparément. Comme suit:Code:
1
2
3
4
5
6 <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> <url-pattern>*.jsf</url-pattern> </servlet-mapping>
Avec ça l'erreur disparait.Code:
1
2
3
4
5
6
7
8
9 <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping>