2013-03-14 68 views
0

這是我的JSF文件爲什麼它會在jsf文件中顯示空指針異常?

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

    </h:head> 
    <h:body> 
     <f:view> 
      <h:form> 
       <h1><h:outputText value="List"/></h1> 
       <h:dataTable value="#{manageBean.tours}" var="item"> 
        <h:column> 
         <f:facet name="header"> 
          <h:outputText value="Tourid"/> 
         </f:facet> 
         <h:outputText value="#{item.tourid}"/> 
        </h:column> 
       </h:dataTable> 
      </h:form> 
     </f:view> 
    </h:body> 
</html> 

這是我管理豆

public class manageBean { 
    private Tourpackage tour; 
    private List<Tourpackage> tours; 
    private sessionBean session; 

    public manageBean() { 
    } 

    public List<Tourpackage> getTours() { 
     return session.retrieveTour(); 
    } 

    public void setTours(List<Tourpackage> tours) { 
     this.tours = tours; 
    } 
} 

這是我的會話bean

public class sessionBean { 
    private EntityManager em; 

    public List<Tourpackage> retrieveTour(){ 
     Query query = em.createNamedQuery("Tourpackage.findAll"); 
     return query.getResultList(); 
    } 
} 

這是我的實體類(排除變量和方法)

@NamedQueries({ 
@NamedQuery(name = "Reservation.findAll", query = "SELECT r FROM Reservation r"), 
@NamedQuery(name = "Reservation.findByReservationid", query = "SELECT r FROM Reservation r WHERE r.reservationid = :reservationid"), 
@NamedQuery(name = "Reservation.findByReservationdate", query = "SELECT r FROM Reservation r WHERE r.reservationdate = :reservationdate")}) 

公共類保留實現Serializable {0} {0} {0}}}這裏Any1的JSF專家? 我每次通過netbeans運行jsf文件時都會收到空指針異常,我使用的數據庫位於netbeans中。原諒我可怕的格式。

堆棧跟蹤

java.lang.NullPointerException 
at manageBean.getTours(manageBean.java:23) 
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:601) 
at javax.el.BeanELResolver.getValue(BeanELResolver.java:363) 
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) 
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) 
at com.sun.el.parser.AstValue.getValue(AstValue.java:138) 
at com.sun.el.parser.AstValue.getValue(AstValue.java:183) 
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224) 
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) 
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) 
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) 
at javax.faces.component.UIData.getValue(UIData.java:731) 
at javax.faces.component.UIData.getDataModel(UIData.java:1798) 
at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484) 
at javax.faces.component.UIData.setRowIndex(UIData.java:473) 
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:81) 
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820) 
at javax.faces.component.UIData.encodeBegin(UIData.java:1118) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1755) 
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) 
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) 
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) 
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) 
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) 
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) 
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) 
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
at java.lang.Thread.run(Thread.java:722) 

應用提出的解決方案後,我有新的問題:

com.sun.faces.mgbean.ManagedBeanCreationException: An error occurred performing resource injection on managed bean manage 
at com.sun.faces.mgbean.BeanBuilder.injectResources(BeanBuilder.java:211) 
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:103) 
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) 
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) 
at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) 
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) 
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) 
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) 
at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:103) 
at com.sun.el.parser.AstValue.getValue(AstValue.java:179) 
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224) 
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) 
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) 
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) 
at javax.faces.component.UIData.getValue(UIData.java:731) 
at javax.faces.component.UIData.getDataModel(UIData.java:1798) 
at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484) 
at javax.faces.component.UIData.setRowIndex(UIData.java:473) 
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:81) 
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820) 
at javax.faces.component.UIData.encodeBegin(UIData.java:1118) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1755) 
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) 
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) 
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) 
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) 
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) 
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) 
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) 
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) 
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
at java.lang.Thread.run(Thread.java:722) 




Caused by: com.sun.faces.spi.InjectionProviderException: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=manage/tour,Remote 3.x interface =entities.Tourpackage,ejb-link=null,lookup=,mappedName=,jndi-name=entities.Tourpackage,refType=Session into class manage: Lookup failed for 'java:comp/env/manage/tour' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} 
at org.glassfish.faces.integration.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:194) 
at com.sun.faces.mgbean.BeanBuilder.injectResources(BeanBuilder.java:205) 
... 56 more 




Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting to inject Remote ejb-ref name=manage/tour,Remote 3.x interface =entities.Tourpackage,ejb-link=null,lookup=,mappedName=,jndi-name=entities.Tourpackage,refType=Session into class manage: Lookup failed for 'java:comp/env/manage/tour' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} 
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703) 
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470) 
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:171) 
at org.glassfish.faces.integration.GlassFishInjectionProvider.inject(GlassFishInjectionProvider.java:184) 
... 57 more 




Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/manage/tour' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=manage/tour,Remote 3.x interface =entities.Tourpackage,ejb-link=null,lookup=,mappedName=,jndi-name=entities.Tourpackage,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'entities.Tourpackage#entities.Tourpackage' [Root exception is javax.naming.NamingException: Lookup failed for 'entities.Tourpackage#entities.Tourpackage' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: entities.Tourpackage#entities.Tourpackage not found]]] 
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518) 
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455) 
at javax.naming.InitialContext.lookup(InitialContext.java:411) 
at javax.naming.InitialContext.lookup(InitialContext.java:411) 
at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:599) 
... 60 more 




Caused by: javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=manage/tour,Remote 3.x interface =entities.Tourpackage,ejb-link=null,lookup=,mappedName=,jndi-name=entities.Tourpackage,refType=Session' . Actual (possibly internal) Remote JNDI name used for lookup is 'entities.Tourpackage#entities.Tourpackage' [Root exception is javax.naming.NamingException: Lookup failed for 'entities.Tourpackage#entities.Tourpackage' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: entities.Tourpackage#entities.Tourpackage not found]] 
at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:191) 
at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1109) 
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:776) 
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:744) 
at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:169) 
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:498) 
... 64 more 




Caused by: javax.naming.NamingException: Lookup failed for 'entities.Tourpackage#entities.Tourpackage' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: entities.Tourpackage#entities.Tourpackage not found] 
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518) 
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455) 
at javax.naming.InitialContext.lookup(InitialContext.java:411) 
at javax.naming.InitialContext.lookup(InitialContext.java:411) 
at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:186) 
... 69 more 




Caused by: javax.naming.NameNotFoundException: entities.Tourpackage#entities.Tourpackage not found 
at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:248) 
at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:215) 
at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77) 
at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:119) 
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:505) 
... 73 more 
+2

什麼是錯誤訊息/堆棧跟蹤? – iamnotmaynard 2013-03-14 14:31:35

+1

給堆棧跟蹤 – 2013-03-14 14:32:24

+2

'session'爲null,所以在'getTours()'方法中你有NPE。 – partlov 2013-03-14 14:32:33

回答

0

annoate你的班,@ManagedBeanfaces-config.xml添加。 如果您使用cdi註釋他們與@Named。 否則你不能通過el表達來訪問你。

offtopic

按照慣例,Java類型名稱通常以大寫字母開頭:

manageBean - > ManageBean

一個sessionBean - > SessionBean的

0

有中沒有說明您的碼!你忘了將它們包含在你的文章中嗎?或者它們從代碼中遺漏了? 至少你必須註釋manageBean爲@ManagedBean(或@Named @Statefull)並將@Inject註釋添加到注入的對象(EntityManager和sessionBean)中,否則容器將永遠不會處理它們的生命週期(例如爲你實例化它們,所以你不要沒有獲得NPE)

+0

我排除他們 – Lantz 2013-03-14 14:36:50

+1

我建議您添加註釋,以便我們對答案更加精確。這是至關重要的信息,缺乏它們會導致假設。恕我直言,一個也應該包括進口爲了驗證哪個包被使用... – Cascader 2013-03-14 14:38:51

4

sessionBean session在您的託管bean中永遠不會初始化。把它變成一個EJB如果你在Java EE 6的環境是:

@Stateless 
public class sessionBean { 

    @PersistenceContext(unitName = "yourPersistenceContextFileName") 
private EntityManager em; 
    //... 
} 

然後只是把它作爲您的託管bean的EJB。此外,你應該在@PostConstruct方法來獲取數據,而不是在吸氣,因爲他的getter方法可以多次調用(Why JSF calls getters multiple times):

@ManagedBean 
@ViewScoped 
public class manageBean { 

    @EJB 
    private sessionBean session; 
    private List<Tourpackage> tours; 

    @PostConstruct 
    public void init() { 
     tours = session.retrieveTour(); 
    } 

    //plain getters/setters 
} 
+0

thx人,但不是theres一個新的錯誤,我將編輯問題顯示它 – Lantz 2013-03-14 14:46:51

+0

@Lantz我更新了我的答案爲了顯示基本的Java EE 6解決方案。 – 2013-03-14 14:52:47