PrimeFaces 3.2 selsectOneMenu valueChangeListener ne fonctionne pas

je souhaite récupérer la Liste basée sur la sélection des dropdownlist élément. pour cela, je suis en utilisant le code suivant qui n'est pas de travail:

<p:selectOneMenu style="width: 150px" value="#{watchBean.exchange}">
                <f:selectItem itemLabel="NSE" itemValue="nse"/>
                <f:selectItem itemLabel="BSE" itemValue="bse"/>            
                <p:ajax event="change" update=":frm" listener="#{watchBean.doScripList}" />
            </p:selectOneMenu> 

bean code:

    public void doScripList(ValueChangeEvent e)
{

    sl=getAllScripByExchange((String)e.getNewValue());  //sl is of type List<MasterScrip>
}

quand je debug , je vois que l'événement n'est pas déclenché et j'obtiens l'erreur suivante:

javax.el.MethodNotFoundException: Method not found: beans.watchBean@9ac2e4.doScripList(javax.faces.event.AjaxBehaviorEvent)
at com.sun.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:155)...

quand j'ai omettre p:ajax échanger type est également pas get/set
ce qui est à l'origine de ce problème? quelle est la solution?

édité
renommé la méthode de wow() toujours la même erreur :

 javax.el.MethodNotFoundException: Method not found: beans.watchBean@1732d83.wow(javax.faces.event.AjaxBehaviorEvent)

édité : managed bean code

 import java.util.List;
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.xml.ws.WebServiceRef;
import service.MasterScrip;
import service.StatelessWebService_Service;
@Named(value = "watchBean")
@RequestScoped
public class watchBean {
    @WebServiceRef(wsdlLocation = "WEB-INF/wsdl/localhost_8080/StatelessWebService/StatelessWebService.wsdl")
    private StatelessWebService_Service service;

    /** Creates a new instance of watchBean */
    public watchBean() {
    }
    String uname,scripSym,exchange;
    Integer scripID;
    List<UserTrack> ut;
List<MasterScrip> sl;
    public List<MasterScrip> getSl() {
        return sl;
    }

    public void setSl(List<MasterScrip> sl) {
        this.sl = sl;
    }


    public String getExchange() {
        return exchange;
    }

    public void setExchange(String exchange) {
        sl=getAllScripByExchange(exchange);
        this.exchange = exchange;
    }
public void wow(ValueChangeEvent e)
{    
    sl=getAllScripByExchange((String)e.getNewValue());
   //setSl(sl);
    //FacesContext.getCurrentInstance().renderResponse();

    //sl=getAllScripByExchange(exchange);
}
  • pour sanity check : essayez de renommer vos doScripList en quelque chose comme wow et l'essayer avec <p:ajax listener="#{watchBean.wow}".... (redémarrer votre serveur web...)
  • comme vous pouvez le voir la réponse donnée ci-dessous par @Sai Ye Yan Naing Aye, il dit que c'est un bug dans primefaces 3.2 . est-il vrai? ou dois-je aller avec ur solution?
  • Je ne voudrais pas compter sur "ses un bug" sans lien de question ouverte + sa solution donnée est de JSF 1...
  • renommé la méthode de wow() toujours la même erreur : javax.el.MethodNotFoundException: Méthode non trouvé: [email protected](javax.des visages.de l'événement.AjaxBehaviorEvent)
  • vérifiez vos importations, somethiong comme ça ? import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped;
  • édité mon pour inclure managed bean code, j'ai vérifié, pls vérifier une fois si vous trouvez des erreurs...
  • essayez de changer @Named(value = "watchBean") en ManagedBean et @RequestScoped en import javax.faces.bean.RequestScoped; l'utilisation exacte des importations je vous ai dit avant... b.t.w êtes-vous vraiment travailler avec le CDI ?
  • import javax.faces.bean.ManagedBean; (je l'ai déjà écrit que ci-dessus...)
  • importés nécessaires importations comme vous l'avez suggéré, mais encore, la méthode n'est pas appelée et cette fois, aucune erreur n'est rencontrée, où suis-je mal?
  • vous avez placé un point de rupture à l'intérieur de la méthode?
  • ouais je l'ai gardé à l'intérieur de la méthode à sl=... sry pour mon commentaire précédent, la méthode n'est pas appelée ET l'erreur est toujours affiché - méthode pas trouvé de wow()
  • supprimer event="change" et assurez-vous que le selectOneMenu est à l'intérieur d'une forme et il n'y a pas des formulaires imbriqués
  • n'a donc toujours la même erreur : javax.el.MethodNotFoundException: Méthode non trouvé: [email protected](javax.des visages.de l'événement.AjaxBehaviorEvent)

InformationsquelleAutor z22 | 2012-05-28