2016-04-15 99 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服务器工作:) –

相关问题