2011-11-22 41 views
1

這裏是我的網頁的作品:PrimeFaces 3.0.M4 <P:cellEditor的> NullPointerException異常

<html xmlns:f="http://java.sun.com/jsf/core" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:p="http://primefaces.org/ui"> 
<f:view contentType="text/html"> 
<h:head> 
</h:head> 
<h:body> 
    <h:form> 
     <p:dataTable value="#{testBean.testList}" var="test"> 
      <p:column> 
       <h:outputText value="#{test}" /> 
      </p:column> 
     </p:dataTable> 
    </h:form> 
</h:body> 
</f:view> 
</html> 

這裏是我的網頁不能正常工作:

<html xmlns:f="http://java.sun.com/jsf/core" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:p="http://primefaces.org/ui"> 
<f:view contentType="text/html"> 
<h:head> 
</h:head> 
<h:body> 
    <h:form> 
     <p:dataTable value="#{testBean.testList}" var="test"> 
      <p:column> 
       <p:cellEditor> 
        <f:facet name="output"> 
         <h:outputText value="#{test}" /> 
        </f:facet> 
        <f:facet name="input"> 
         <p:inputText value="#{test}" style="width:100%" /> 
        </f:facet> 
       </p:cellEditor> 
      </p:column> 
      <p:column> 
       <p:rowEditor /> 
      </p:column> 
     </p:dataTable> 
    </h:form> 
</h:body> 
</f:view> 
</html> 

這裏是我收到的錯誤:

Nov 22, 2011 10:17:05 PM org.apache.myfaces.renderkit.ErrorPageWriter handleThrowable 
SEVERE: An exception occurred 
javax.faces.FacesException: java.lang.NullPointerException 
at  org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.wrap(ExceptionHandlerImpl.java:241) 
at org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:156) 
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:258) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.NullPointerException 
at javax.faces.component.UIData.restoreDescendantComponentStates(UIData.java:718) 
at javax.faces.component.UIData.restoreDescendantComponentStates(UIData.java:729) 
at javax.faces.component.UIData.restoreDescendantComponentStates(UIData.java:729) 
at javax.faces.component.UIData.setRowIndexWithoutPreserveComponentState(UIData.java:580) 
at javax.faces.component.UIData.setRowIndex(UIData.java:500) 
at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:604) 
at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:227) 
at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:205) 
at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:97) 
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:519) 
at javax.faces.component.UIData.encodeEnd(UIData.java:1416) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:672) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:668) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:668) 
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:668) 
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1483) 
at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:281) 
at  org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85) 
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239) 
... 17 more 

似乎只有當我把單元格編輯器中發生的,我所做的bean作爲簡約越好。有什麼想法嗎?

回答

0

你不能改變一個列表成員的值是這樣的:

<p:inputText value="#{test}" style="width:100%" /> 

你應該分配的inputText值一個bean成員/變量,然後把它添加到你的列表...或更好的,work with objects。 然而,我試過你的代碼,我沒有得到任何錯誤(不工作,但沒有錯誤),雖然我使用Mojarra而不是MyFaces。

+0

嗨Spauny,感謝您的及時回覆。我最初正在處理具有屬性的對象列表,並且正在接收相同的錯誤,我只是爲了舉例而簡化了它。也許我會給Mojorra實施一下。 – jimmy

+0

@jimmy你做**沒有**必須改變實施,因爲這個錯誤:**試着處理它** ...如果這與Mojarra正常工作,並在一段時間後,你會得到另一個錯誤?你變回MyFaces?這很荒唐!告訴我你想做什麼/嘗試,發佈代碼並處理問題!此外,最新的MyFaces版本與您的服務器(servlet容器)兼容也很重要! – spauny

+0

這是一個公平點。我正在評估各種實現。 PrimeFaces看起來像一個很棒的組件套件,它只是我嘗試使用的第一個組件實際上並沒有工作。我將不得不再看一看。謝謝。 – jimmy

相關問題