Bonjour,

Je suis entrain de créer un menu dynamique en java.
j'utilise JSF facelet 1.2 - Tomacat 5.5 - JDK 1.6 et RicheFaces - Spring

Je n'ai pas de soucis pour la création dynamique de mes différents éléments de mon menu.

exemple de test :
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
HtmlDropDownMenu phareDropDownMenu= new HtmlDropDownMenu();
		phareDropDownMenu.setItemClass("menu-link");
		phareDropDownMenu.setStyleClass("menu-link");
		phareDropDownMenu.setSelectItemClass("menu-link-select");
		phareDropDownMenu.setSelectedLabelClass("menu-link-select");
		phareDropDownMenu.setDirection("bottom-right");
		phareDropDownMenu.setJointPoint("tr");
		phareDropDownMenu.setValue("File");
 
		HtmlMenuItem item = new HtmlMenuItem();
		item.setValue("Test Service");
		FacesContext fc = FacesContext.getCurrentInstance();
		item.addActionListener(phareActionListener);
		item.setReRender("dataTableProfil");
		item.setLimitToList(true);
 
		//item.setActionListener(coreBean.findSomeArtEdito(evt));
		phareDropDownMenu.getChildren().add(item);
Mon problème vient quand je veux indiquer une action à réaliser sur le menu.
J'ai utilisé le item.addActionListener(phareActionListener) de l'objet HtmlMenuItem j'ai créer une classe qui implémente ActionListener:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class PhareActionListener implements ActionListener {
 
 
 
			  public void processAction(ActionEvent e) throws AbortProcessingException {
				//  coreBean.findSomeArtEdito(e);
				  FacesContext context = FacesContext.getCurrentInstance();
 
				    String clientId = e.getComponent().getClientId(context);
				    System.out.println("processAction : clientId=" + clientId);
 
			  }
 
	}
Mais quand je clique sur mon menu et que j'arrive à l'élément de l'appel actionListener j'obtiens :

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
GRAVE: JSF1054: (Phase ID: RESTORE_VIEW 1, View ID: ) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@1d66c39]
27 oct. 2008 15:28:44 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet Faces Servlet a généré une exception
java.lang.IllegalStateException: com.***.phare.menu.ui.PhareMenu$PhareActionListener
	at javax.faces.component.StateHolderSaver.restore(StateHolderSaver.java:109)
	at javax.faces.component.UIComponentBase.restoreAttachedState(UIComponentBase.java:1433)
	at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1298)
	at javax.faces.component.UICommand.restoreState(UICommand.java:337)
	at org.richfaces.component.html.HtmlMenuItem.restoreState(HtmlMenuItem.java:1306)
	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1166)
	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
	at javax.faces.component.UIComponentBase.processRestoreState(UIComponentBase.java:1182)
	at org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:415)
	at com.sun.faces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:316)
	at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:316)
	at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:316)
	at org.ajax4jsf.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:116)
	at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:176)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
	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:175)
	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:263)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
Pouvez vous m'expliquer ce que j'ai loupé?

Merci d'avance