1

im trying to insert data to date table using JSF.

thats my XHTML page:

<h:body>
         <h:form>
            <h:dataTable  value = "#{necklacesBean.users}" var= "item" border="2">
              <h:column>
              <f:facet name ="header" >user name</f:facet>
              <h:outputText value="#{item.name}"/>
          </h:column> 
          <h:column>
              <f:facet name ="header" >pass</f:facet>
              <h:outputText value="#{item.password}"/>
          </h:column>   
          <h:column>
              <f:facet name ="header" >country</f:facet>
              <h:outputText value="#{item.country}"/>
          </h:column>  
          <h:column>
              <f:facet name ="header" >city</f:facet>
              <h:outputText value="#{item.city}"/>
          </h:column>   
          <h:column>
              <f:facet name ="header" >Street</f:facet>
              <h:outputText value="#{item.street}"/>
          </h:column>   
          <h:column>
              <f:facet name ="header" >house number</f:facet>
              <h:outputText value="#{item.houseNumber}"/>
          </h:column>   
          <h:column>
              <f:facet name ="header" >email</f:facet>
              <h:outputText value="#{item.email}"/>
          </h:column>   
                
            </h:dataTable>
        </h:form> 
 
    </body>

that my necklacesBean class:

package ManageBean;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;


/**
 *
 * @author גל לישה
 */
@ManagedBean
@RequestScoped
public class necklacesBean {
    private List<userDate> arr;
    /**
     * Creates a new instance of necklacesBean
     */
    public necklacesBean() {
           
    }

@PostConstruct
public void init(){
    arr = new ArrayList<userDate>();
    arr.add(new userDate("gal","12345","israel","ramargan","telhai",123,"gmail@gal"));
}

public List<userDate> getUsers(){
   return arr;
}

}

i getting this error : (if i remove the datatable everything work, when i add it - the xhtml page isnt show)

java.lang.NoClassDefFoundError: javax/enterprise/context/spi/Contextual
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at com.sun.faces.util.Util.loadClass(Util.java:333)
    at com.sun.faces.application.ApplicationImpl.newThing(ApplicationImpl.java:1847)
    at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:2019)
    at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:1246)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.createComponent(ComponentTagHandlerDelegateImpl.java:588)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:176)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:135)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:161)
    at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:203)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:135)
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:96)
    at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:94)
    at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:96)
    at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:88)
    at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:162)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:381)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:102)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:671)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:367)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:639)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1647)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.ClassNotFoundException: javax.enterprise.context.spi.Contextual
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1420)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228)
    ... 44 more

its my first time to use jsf with data table, someone have any idea how to solve it? its like i cant use the data table

Gal Lisha
  • 51
  • 1
  • The class being looked for is part of CDI. Tomcat does not ship it out the box. You need to install it manually (like as you did for JSF). See abovelinked duplicate for instructions. – BalusC Aug 29 '22 at 08:51
  • Try it again , but without the spaces on the ends of equal = signs in the markup attributes. XML - XHTML is enforced syntax. Would say any mistake in JSF markup would be lethal to its operation! – Samuel Marchant Sep 01 '22 at 03:47
  • i solved it by adding the cdi-api.jar to the lib folder. – Gal Lisha Sep 04 '22 at 13:15

0 Answers0