[JSF - Myfaces] Utiliser un actionlistener avec un commandLink

Utiliser un actionlistener avec un commandLink [JSF - Myfaces] - Java - Programmation

Marsh Posté le 06-09-2007 à 18:34:31    

Bonjour,
 
J'ai fait un code avec JSF identique à un exemple que j'ai trouvé sur le net (je suppose qu'il marche).
Je cherche juste à déclencher une action quand on clique sur lien.
 
la page jsp :
 

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<f:view>
 <f:loadBundle var="bundle_app"
  basename="com.celgene.ebanking.resources.application" />
 <f:loadBundle var="bundle_msg"
  basename="com.celgene.ebanking.resources.messages" />
 <html>
 <head>
 <title><h:outputText value="#{bundle_app['application.title']}" /></title>
 </head>
 <body>
 <h:form>
  <ul>
   <li><h:commandLink
    action="#{homeController.reportCreationForward}"
    value="#{bundle_msg['report.creation']}" actionListener="#{parametersAction.initCompanyList}"/></li>
  </ul>
 </h:form>
 </body>
 </html>
</f:view>


 
le actionListener pointe sur parametersAction.initCompanyList qui est dans mon code java :
 

Code :
  1. package com.celgene.ebanking.actions;
  2. import java.awt.event.ActionEvent;
  3. import java.io.Serializable;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.TreeMap;
  7. import com.celgene.ebanking.beans.ParametersBean;
  8. import com.celgene.ebanking.dao.ParametersDAO;
  9. public class ParametersAction implements Serializable {
  10. /**
  11.  *  
  12.  */
  13. private static final long serialVersionUID = 6639794340097765103L;
  14. private List<ParametersBean> companyList;
  15. private TreeMap<Integer, String> companyMap;
  16. public List<ParametersBean> getCompanyList() {
  17.  return companyList;
  18. }
  19. public ParametersAction() {
  20. }
  21. public void initCompanyList(ActionEvent e) {
  22.  ParametersDAO parametersDAO = new ParametersDAO();
  23.  companyList = parametersDAO.getCompanyList();
  24.  companyMap = new TreeMap<Integer, String>();
  25.  int key = 0;
  26.  String value = null;
  27.  for (ParametersBean parameter : companyList) {
  28.   value = parameter.getCompanyId() + "-" + parameter.getCompanyName()
  29.     + "-" + parameter.getPaymentCurrency();
  30.   companyMap.put(key++, value);
  31.  }
  32. }
  33. public Map<Integer, String> getCompanyMap() {
  34.  return companyMap;
  35. }
  36. public void setCompanyMap(TreeMap<Integer, String> companyMap) {
  37.  this.companyMap = companyMap;
  38. }
  39. public String batchNumbersForward() {
  40.  return "batchNumbersForward";
  41. }
  42. }


 
le managed bean parametersAction a bien ete ajoute dans le faces-config :
 

<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
 <managed-bean>
  <managed-bean-name>parametersAction</managed-bean-name>
  <managed-bean-class>com.celgene.ebanking.actions.ParametersAction</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
</faces-config>


 
 
Quand je clique sur le lien j'ai l'erreur :
 

type Rapport d'exception
 
message  
 
description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.
 
exception  
 
javax.servlet.ServletException: Exception while invoking expression #{parametersAction.initCompanyList}
 javax.faces.webapp.FacesServlet.service(FacesServlet.java:154)
 org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
 
 
cause mère  
 
javax.faces.el.EvaluationException: Exception while invoking expression #{parametersAction.initCompanyList}
 org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:168)
 javax.faces.component.UICommand.broadcast(UICommand.java:89)
 javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
 javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
 org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
 org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
 org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
 javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
 org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
 
 
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.0.28.
 


 
Ca marche pas pourquoi ? que manque-t-il ?
 
http://www.laliluna.de/first-java- [...] orial.html


Message édité par Giz le 06-09-2007 à 18:53:18

---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 06-09-2007 à 18:34:31   

Reply

Marsh Posté le 07-09-2007 à 09:13:32    

:bounce:


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Marsh Posté le 07-09-2007 à 09:34:10    

C'est bon j'ai trouvé : en faisant ctrl+shift+O sous eclipse, ça m'importe awt.event.ActionEvent au lieu javax.faces.ActionEvent !  :lol:


---------------
Asus P5Q Pro | C2D E8400 3GHz@4GHz + Noctua NH-C12P | 2x2Go Patriot Extreme PC-8500 | GeForce GTX 460@Stock 1Go GLH | Crucial SSD M4 64Go Sata3
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed