调用bean方法时的空指针异常(PrimeFaces)

时间:2014-05-18 09:38:12

标签: jsf-2 primefaces nullpointerexception

问题是,当我使用我的命令按钮时,我有一个NPE,我不知道为什么有一些代码和异常的堆栈跟踪我希望你会帮助因为我已经花了一天仍然不知道为什么(primefaces 4.0 )JSF 2.1.6

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;
}

}

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题  messageFacade = new MessageFacade();必须位于构造函数中,而不是函数getMessages()

相关问题