Caricamento dati tabella jstl

di Anonimizzato20478 il
12 risposte
Ciao a tutti,

Non capisco perchè non carica i dati:
questa è la mi pagina jsp:

<form method="GET" action="CandidatoServlet">
			<table border="1">
				<tr>
					<th>Id_candidato</th>
					<th>Nome</th>
					<th>Cognome</th>
					<th>Luogo Di Nascita</th>
					<th>Residenza</th>
					<th>eta</th>
					<th>data</th>
				</tr>

				<c:forEach items="${listCandidato}" var="cand">
					<tr>
						<td><c:out value="${cand.id_candidato}" /></td>
						<td><c:out value="${cand.nome}" /></td>
						<td><c:out value="${cand.cognome}" /></td>
						<td><c:out value="${cand.luogoDiNascita}" /></td>
						<td><c:out value="${cand.residenza}" /></td>
						<td><c:out value="${cand.eta}" /></td>
						<td><c:out value="${cand.data}" /></td>
					</tr>
				</c:forEach>
			</table>
		</form>


questa è la mia servlet:

CandidatoJdbcImpl cImpl = new CandidatoJdbcImpl();

		System.out.println("sono nella CandidatoServlet");
		try {
			List<Candidato> cList = cImpl.getAllCandidato();
			request.setAttribute("listCandidato", cList);

			RequestDispatcher vista = request.getRequestDispatcher("index.jsp");
			vista.forward(request, response);

		} catch (ParseException e) {
			e.printStackTrace();
		}


ovviamente ho fatto il dao e dao impl


dove ho sbagliato?

12 Risposte

  • robot ha scritto:


    dove ho sbagliato?
    Ad "occhio" non mi pare ci sia nulla di palesemente errato ("id_candidato" con l'underscore in mezzo non è granché ..).
    L'uso di <c:forEach> è corretto e il nome dell'attributo "listCandidato" corrisponde a quanto messo nel request-scope con il setAttribute lato Java.

    Hai verificato (in debugging o con del logging) che cList abbia i dati che ti aspetti? Se ci sono, quello è già un buon punto.
    Come è fatta Candidato? Hai scritto i getter in modo appropriato?

    P.S. do per scontato che il resto di setup sia corretto: JSTL correttamente tirata dentro nel progetto, dichiarazione corretta della taglib con prefisso/uri giusto nella jsp, ecc...
  • Mi da due errori:
    1) non trova la server
    2) che non trova dao iml

    Visto che i progetti sono separati back end e fronte end
  • robot ha scritto:


    Mi da due errori:
    1) non trova la server
    2) che non trova dao iml

    Visto che i progetti sono separati back end e fronte end
    Dovresti spiegare meglio questa "separazione" ... altrimenti detto così vuol dire poco.
  • Questo è l'errore che mi da:

    Type Exception Report

    Message Servlet execution threw an exception

    Description The server encountered an unexpected condition that prevented it from fulfilling the request.

    Exception

    javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    Root Cause

    java.lang.NoClassDefFoundError: it/sync/dao/jdbc/impl/CandidatoJdbcImpl
    it.sync.controller.CandidatoServlet.doGet(CandidatoServlet.java:24)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    Root Cause

    java.lang.ClassNotFoundException: it.sync.dao.jdbc.impl.CandidatoJdbcImpl
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1275)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1104)
    it.sync.controller.CandidatoServlet.doGet(CandidatoServlet.java:24)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    Note The full stack trace of the root cause is available in the server logs.
  • Questo è l'errore nella console di java, che è lo stesso:

    INFORMAZIONI: Server startup in 12702 ms
    mar 06, 2018 9:18:26 AM org.apache.catalina.core.StandardWrapperValve invoke
    GRAVE: Servlet.service() for servlet [CandidatoServlet] in context with path [/StageSyncLabGestioneJdbcServletWeb] threw exception [Servlet execution threw an exception] with root cause
    java.lang.ClassNotFoundException: it.sync.dao.jdbc.impl.CandidatoJdbcImpl
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1275)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1104)
    at it.sync.controller.CandidatoServlet.doGet(CandidatoServlet.java:24)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    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:53)
    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:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:409)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
  • In pratica la parte back end è un progetto che ha i crud
    L'altro progetto, la parte front end con le servlet
    Dopo di che ho collegato il progetto front end con la parte back end
  • robot ha scritto:


    In pratica la parte back end è un progetto che ha i crud
    L'altro progetto, la parte front end con le servlet
    Dopo di che ho collegato il progetto front end con la parte back end
    Il progetto che ha le servlet è sicuramente un progetto di "web application" (che a livello di package finale genererebbe un .war). Mentre l'altro progetto cosa è materialmente? Un'altra webapp? Una "libreria" (jar) ?
  • No è solo la parte back end che ci sono i crud.
    In pratica tutto il progetto è una web app.

    L'errore me l'ho da qui:
    java.lang.NoClassDefFoundError

    vedi errori precedenti
  • robot ha scritto:


    No è solo la parte back end che ci sono i crud.
    In pratica tutto il progetto è una web app.
    E continui a non precisare le cose ...
    Se hai un NoClassDefFoundError, è perché la JVM non trova una classe, ovvio. Ora: quando fai un deploy della webapp (quella dove ci sono le servlet), essa ha modo di referenziare le classi dell'altro progetto "crud"??
    Evidentemente no ...

    Perché? Dipende da come hai impostato il tutto. Del progetto crud crei un jar? E questo jar è reso disponibile alla webapp? Se non è così .. quale/come è la situazione??
  • Se hai un NoClassDefFoundError, è perché la JVM non trova una classe, ovvio. Ora: quando fai un deploy della webapp (quella dove ci sono le servlet), essa ha modo di referenziare le classi dell'altro progetto "crud"??
    Si

    ho aggiunto il progetto in java build path --> project
    ho aggiunto il progetto in deployment assembly

    Dal progetto crud non creo la jar, è soltanto un normale progetto con i crud list
  • robot ha scritto:


    ho aggiunto il progetto in java build path --> project
    ho aggiunto il progetto in deployment assembly

    Dal progetto crud non creo la jar, è soltanto un normale progetto con i crud list
    Non l'hai precisato finora: IDE Eclipse giusto? E senza Maven (o altro build tool) giusto?

    Allora: se il progetto dove ci sono le operazioni crud è un normale "Java Project" (NON webapp o altro), allora è SUFFICIENTE che nell'altro progetto webapp, nelle proprietà di progetto alla sezione Deployment Assembly, vai ad aggiungere che referenzia l'altro progetto crud. Se guardi in quella sezione, nella colonna Deploy Path ti mette un jar sotto WEB-INF/lib. Questo jar è quello generato in automatico dal progetto crud ed andrà a finire appunto sotto WEB-INF/lib del progetto webapp.
    Il Build Path va già a posto da solo, non serve toccarlo a mano.
  • RISOLTO.
    IN PRATICA NON HO AGGIUNTO IL PROGETTO IN DEPLOYMENT ASSEMBLY
Devi accedere o registrarti per scrivere nel forum
12 risposte