2016-04-15 21 views
0

これは私のテーブルです:時間:dataTableのはjava.lang.NoClassDefFoundErrorが発生します:javaxの/サーブレット/ 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

JSFは、いくつかの点でJSTLに依存しています。そのうちの1人が<h:dataTable value>の後ろにあるDataModelを調べるべきです。また、JSTL <sql:query var="result">もサポートしています(これは10年以来落胆していますが、それは別です)。

実際には、実際のJava EEサーバーではなく、ベアボーンservletcontainerを実行しているようです。スタックトレースは、それがTomcatであることを示唆しています。サーブレット、JSP、EL、WSのみを出荷します。 JSF、JSTL、CDI、EJB、JPA、JTA、JMSなどの他のJava EEのものはすべて出荷していません。手動でインストールするか、実際のJava EEに移動するだけです例えば、TomEEまたはWildFly)。

our JSF wiki pageの「JSFのインストール」セクションで、正しいJSTL JARへのリンクと正しいMavenの依存関係を見つけることができます。

+0

TomEEサーバーを使用していただきありがとうございます:) –

関連する問題