2016-04-15 48 views
0

這是我的表:H:dataTable中拋出java.lang.NoClassDefFoundError:使用javax/servlet的/ JSP/JSTL/SQL /結果

<h:dataTable value="#{registerS.students}" var="registerS.student"> 
<h:column>     
    <f:facet name="header">Name</f:facet>     
    #{registerS.student.userName} 
</h:column> 
<h:column> 
    <f:facet name="header">Surname</f:facet> 
    #{registerS.student.userSurname} 
</h:column> 
<h:column> 
    <f:facet name="header">email</f:facet> 
    #{registerS.student.email} 
</h:column> 
<h:column> 
    <f:facet name="header">password</f:facet> 
    #{registerS.student.password} 
</h:column> 
<h:column> 
    <f:facet name="header">classCode</f:facet> 
    #{registerS.student.classCode} 
</h:column> 
</h:dataTable> 

當打開一個網頁,這個網頁,我得到這個異常:

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/sql/Result 
    javax.faces.component.UIData.getDataModel(UIData.java:1822) 
    javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:484) 
    javax.faces.component.UIData.setRowIndex(UIData.java:473) 
    com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:82) 
    javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:869) 
    javax.faces.component.UIData.encodeBegin(UIData.java:1133) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1854) 
    javax.faces.render.Renderer.encodeChildren(Renderer.java:176) 
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:894) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) 
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) 
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:443) 
    com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) 
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) 
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) 
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 

這是如何造成的,我該如何解決?

回答

0

JSFJSTL有一些依賴關係。其中之一是檢查<h:dataTable value>後面應該使用哪個DataModel。它也支持JSTL <sql:query var="result">(十年來不鼓勵,但是不管)。

顯然你運行的是準系統servletcontainer而不是真正的Java EE服務器。堆棧跟蹤提示它是Tomcat。它只包含Servlet,JSP,EL和WS。它並沒有將所有其他的Java EE東西從JSF,JSTL,CDI,EJB,JPA,JTA,JMS等等那裏拿出來。你必須手動安裝它(或者轉移到一個真正的Java EE服務器,如TomEEWildFly)。

您可以在our JSF wiki page的「安裝JSF」部分找到正確的JSTL JAR和正確的Maven依賴項的鏈接。

+0

謝謝,使用TomEE服務器工作:) –

相關問題