2014-05-18 28 views
0

問題是,當我使用我的命令按鈕,我有一個NPE,我不知道爲什麼有一些代碼和異常stacktrace我希望你會幫助,因爲我有花一天時間,仍然不知道爲什麼(primefaces 4.0)JSF 2.1.6空指針異常,而調用bean方法(PrimesFaces)

javax.faces.el.EvaluationException: javax.el.ELException: /test.xhtml at line 54 and column 113 action="#{messageBean.save}": java.lang.NullPointerException 
at   javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:96) 
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:100) 
at javax.faces.component.UICommand.broadcast(UICommand.java:120) 
at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:937) 
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:271) 
at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1249) 
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:675) 
at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:34) 
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171) 
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: javax.el.ELException: /test.xhtml at line 54 and column 113 action="#{messageBean.save}": java.lang.NullPointerException 
at org.apache.myfaces.view.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:95) 
at javax.faces.component._MethodExpressionToMethodBinding.invoke(_MethodExpressionToMethodBinding.java:88) 
... 29 more 
Caused by: java.lang.NullPointerException 
at ma.corporate.bean.MessageBean.save(MessageBean.java:60) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.apache.el.parser.AstValue.invoke(AstValue.java:278) 
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273) 
at org.apache.myfaces.view.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:83) 
... 30 more 

我的頁面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:p="http://primefaces.org/ui"> 

<h:head></h:head> 
<h:body> 
<p:panel header="Contactez Nous"> 
    <p:growl id="message" showDetail="true"/> 
     <h:form id="form"> 
      <p:panelGrid style="width:700px;" styleClass="contactcss" 
       columns="2"> 
       <p:inputText value="#{messageBean.message.nomComplet}" style="width:600px" id="nom" required="true" 
        requiredMessage="Champs Obligatoire"> 
        <p:watermark for="nom" value="Nom" /> 
       </p:inputText> 
       <p:message for="nom" display="both" /> 


       <p:inputText style="width:600px" value="#{messageBean.message.email}" id="email" required="true" 
        requiredMessage="Champ Obligatoire" 
        validatorMessage="Email Invalide"> 
        <p:watermark for="email" value="Email" /> 
        <f:validateRegex 
         pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" /> 
       </p:inputText> 
       <p:message for="email" display="both" /> 


       <p:inputText style="width:600px" value="#{messageBean.message.objet}" id="objet" required="true" 
        requiredMessage="Champ Obligatoire"> 
        <p:watermark for="objet" value="Objet" /> 
       </p:inputText> 
       <p:message for="objet" display="both" /> 


       <p:inputMask mask="9999-999-999" style="width:600px" value="#{messageBean.message.telephone}" id="telephone"> 
       <p:watermark for="telephone" value="téléphone" /> 
       </p:inputMask> 
       <p:message for="telephone" display="both" /> 


       <p:inputTextarea style="width:600px;height:200px" value="#{messageBean.message.textMessage}" id="message" 
        required="true" requiredMessage="Champ Obligatoire"> 
        <p:watermark for="message" value="Message" /> 
       </p:inputTextarea> 
       <p:message for="message" display="both" /> 


       <p:commandButton update=":form :message" style="float:right;" action="#{messageBean.save}" value="Envoyer"></p:commandButton> 
      </p:panelGrid> 

     </h:form> 
     </p:panel> 

</h:body> 
</html> 

我的豆 包ma.corporate.bean;

import java.io.Serializable; 
import java.util.List; 

import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.context.FacesContext; 

import ma.corporate.facade.MessageFacade; 
import ma.corporate.model.Message; 
import ma.corporate.util.Email; 
import ma.corporate.util.EmailSender; 

import org.primefaces.context.RequestContext; 

@ManagedBean(name = "messageBean") 
@SessionScoped 
public class MessageBean implements Serializable { 
/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
private MessageFacade messageFacade; 
private List<Message> messages; 
private Message message; 
private Email email =new Email(); 
private String reponse; 
public MessageBean() { 

    message = new Message(); 
} 

public List<Message> getMessages() { 
    // messages = messageFacade.Lister(); 
    messageFacade = new MessageFacade(); 
    messages = messageFacade.Lister(); 
    return messages; 
} 

public void setMessages(List<Message> messages) { 
    this.messages = messages; 
} 

public Message getMessage() { 
    return message; 
} 

public void setMessage(Message message) { 
    this.message = message; 
} 

public void save() { 
    System.out.println(message.getEmail()); 
    System.out.println(message.getNomComplet()); 
    System.out.println(message.getObjet()); 
    System.out.println(message.getTelephone()); 
    System.out.println(message.getTextMessage()); 
    messageFacade.enregistrer(message); 
} 

public void Supprimer(Message message) { 
    messageFacade.supprimer(message); 
    messages = messageFacade.Lister(); 
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Succès","Suppression Complète")); 
} 

public void init(Message message) { 

    this.message = message; 
    email.setDestinataire(message.getEmail()); 
    email.setObjet(message.getObjet()); 
    //email.setTexte("eljfdksjlfhdskjfsdhfkds"); 
    RequestContext.getCurrentInstance().update(":form1:dlg3"); 
    //System.out.println(this.message.getNomComplet()); 
} 

public void sendEmail() 
{ 
    /*System.out.println("Send Email"); 
    System.out.println(email.getObjet()); 
    System.out.println(email.getTexte()); 
    System.out.println(email.getDestinataire());*/ 
    //FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"En Cours","En Cours d'envoi")); 

    @SuppressWarnings("unused") 
    EmailSender sender = new EmailSender(email); 
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Succès","Message Envoyé")); 

    //System.out.println("après emailSender"); 
} 

public Email getEmail() { 
    return email; 
} 

public void setEmail(Email email) { 
    this.email = email; 
} 

public String getReponse() { 
    return reponse; 
} 

public void setReponse(String reponse) { 
    this.reponse = reponse; 
} 

}

回答

0

我已經解決了我的問題是 messageFacade = new MessageFacade();必須在構造函數中,而不是在功能getMessages()