2013-12-06 2 views
0

Я работаю над динамическим веб-приложением, и в качестве первого шага я хочу использовать мою страницу jsf для сохранения новой группы в базе данных. Я подключения к СУБД Oracle Database 10g, работая на затмение Kepler, с Glassfish4 и использованием primefaces 4.0.This в StackTracejavax.faces.el.EvaluationException: java.lang.NullPointerException в моем веб-приложении jsf

    2013-12-07T00:38:34.028+0100|Avertissement: #{groupeBean.createGroupe}: java.lang.NullPointerException 
       javax.faces.FacesException: #{groupeBean.createGroupe}: java.lang.NullPointerException 
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118) 
at javax.faces.component.UICommand.broadcast(UICommand.java:315) 
at javax.faces.component.UIData.broadcast(UIData.java:1108) 
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) 
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) 
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) 
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) 
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) 
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188) 
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) 
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) 
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) 
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) 
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) 
at java.lang.Thread.run(Thread.java:724) 
      Caused by: javax.faces.el.EvaluationException: java.lang.NullPointerException 
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101) 
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 
... 35 more 
     Caused by: java.lang.NullPointerException 
at com.portail.dao.DaoGroupe.ajouter(DaoGroupe.java:21) 
at com.portail.managedBeans.GroupeBean.createGroupe(GroupeBean.java:24) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at com.sun.el.parser.AstValue.invoke(AstValue.java:275) 
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304) 
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40) 
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50) 
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87) 
... 36 more 

Это код managedBean

   @ManagedBean 
       @ViewScoped 
       public class GroupeBean { 
       private Groupe newGroupe=new Groupe(); 
       public Groupe getNewGroupe() { 
      return newGroupe; 
       } 
      public void setNewGroupe(Groupe newGroupe) { 
     this.newGroupe = newGroupe; 
      } 
      private DaoGroupe gdao= new DaoGroupe(); 
     public void createGroupe() 
      { 
     gdao.ajouter(newGroupe); 
      }} 

Это код Dao Класс

  public class DaoGroupe { 
private static final String JPA_UNIT_NAME="Portail"; 
private EntityManager entityManager; 
protected EntityManager getEntityManager() { 
    if (entityManager == null) { 
     entityManager = Persistence.createEntityManagerFactory(
       JPA_UNIT_NAME).createEntityManager(); 
    } 
    return entityManager; 
} 
public void ajouter(Groupe g) 
    { 
     EntityTransaction tx = entityManager.getTransaction(); 
     tx.begin(); 
     entityManager.persist(g); 
     tx.commit();}} 

И это вкладка Вставки в моих страницах JSF

    <p:tab title="Groupe"> 
      <h:form> 
       <h:panelGrid columns="2"> 
        <h:outputText value="Nom : *" /> 
        <p:inputText value="#{groupeBean.newGroupe.nom}" required="true" 
         label="nomgrp" validatorMessage="Nom de Groupe Obligatoire" /> 
         <h:outputText value="Numéro : *" /> 
        <p:inputText value="#{groupeBean.newGroupe.idGroupe}" required="true" 
         label="numgrp" validatorMessage="Numéro de Groupe Obligatoire" /> 
       </h:panelGrid> 
       <p:commandButton value="Ajouter" 
        style="width:205px;margin-left:10%" 
        action="#{groupeBean.createGroupe}" /> 
      </h:form> 

     </p:tab> 
+0

Вы с помощью GlassFish, который поддерживает EJBs вне коробки. Почему вы все еще вручную создаете диспетчер объектов и вручную управляете транзакциями? Это болезненно. Просто используйте EJB, и вы получите в два раза меньше кода, чем сейчас, потому что GlassFish автоматически активирует управление инъекциями и транзакциями. – BalusC

+0

Это на самом деле университетский проект, и мне нужно построить проект с нуля и посмотреть, что я новичок, мой профессор дал мне модель проекта, и я должен последовать за ним, чтобы закончить проект до крайнего срока. – MeknessiHamida

+0

Понятный , На самом деле это хорошо, вы в будущем лучше поймете, какой шаблон или беспорядок могут унести EJB от вас. Удачи :) – BalusC

ответ

1

Вы получаете NullPointerException в вашем DaoGroupe-классе в рамках методы ajouter. Я думаю, что причиной является entityManager.getTransaction(), потому что entityManager не заполнен нигде. Замена его с помощью вашего метода getEntityManager() может стать первым моментом для начала отладки.

EntityTransaction tx = getEntityManager().getTransaction(); 

Надеется, что это помогает ...

+0

Это действительно сработало спасибо – MeknessiHamida

Смежные вопросы