I'm working on a college project that stores links to various learning materials. There is a list of links to text tutorials in my DB, and the project's files are following:
TextTutorialController.java:
package io.spring.learn.web;
import java.util.List;
import javax.inject.Inject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import io.spring.learn.proc.TextTutorial;
import io.spring.learn.proc.TextTutorialService;
@Controller
@RequestMapping("/textTutorials")
public class TextTutorialController {
@Inject
TextTutorialService service;
@RequestMapping(value = "/listOfTextTutorials", method = RequestMethod.GET)
public String showList(ModelMap model) {
List<TextTutorial> listOfTextTutorials = service.findAll();
model.addAttribute("textTutorialList", listOfTextTutorials);
return "listOfTextTutorials";
}
}
listOfTextTutorials.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="s" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>List of Text Tutorials</title>
</head>
<body>
<h1>List of Text Tutorials on Spring:</h1>
<table>
<tr>
<th>ID</th>
<th>Name</th>
<th>URL</th>
<th>Alexa Global Rank</th>
<th>Total Chapters</th>
<th>% Completed</th>
</tr>
<c:forEach var="textTutorial" items="${textTutorialList}">
<tr>
<td><c:out value="${textTutorial.id}" /></td>
<td><c:out value="${textTutorial.name}" /></td>
<td><c:out value="${textTutorial.url}" /></td>
<td><c:out value="${textTutorial.alexaGlobalRank}" /></td>
<td><c:out value="${textTutorial.totalChapters}" /></td>
<td><c:out value="${textTutorial.percentCompleted}" /></td>
</tr>
</c:forEach>
</table>
</body>
</html>
index.jsp:
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html>
<head>
<meta charset="utf-8">
<title>Welcome</title>
</head>
<body>
<a href="textTutorials/listOfTextTutorials.html">List of Text Tutorials on Spring</a>
</body>
</html>
After running the application on Tomcat the console shows that DB connection goes well and even some SELECT statements are queried:
[EL Info]: 2016-06-29 03:29:17.721--ServerSession(2113257970)--EclipseLink, version: Eclipse Persistence Services - 2.5.0.v20130507-3faac2b
[EL Info]: connection: 2016-06-29 03:29:18.265--ServerSession(2113257970)--file:/Users/AgentDen/Documents/Java/MyProjectSpringMVC/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/LearnSpringMVC/WEB-INF/classes/_LearnSpring login successful
[EL Fine]: sql: 2016-06-29 03:29:18.314--ServerSession(2113257970)--Connection(302754878)--SELECT ID FROM books WHERE ID <> ID
[EL Fine]: sql: 2016-06-29 03:29:18.842--ServerSession(2113257970)--Connection(500719466)--SELECT ID FROM CLASSROOM WHERE ID <> ID
[EL Fine]: sql: 2016-06-29 03:29:18.886--ServerSession(2113257970)--Connection(1612903660)--SELECT ID FROM general_articles WHERE ID <> ID
[EL Fine]: sql: 2016-06-29 03:29:18.905--ServerSession(2113257970)--Connection(250314644)--SELECT ID FROM online_courses WHERE ID <> ID
[EL Fine]: sql: 2016-06-29 03:29:18.922--ServerSession(2113257970)--Connection(474813894)--SELECT ID FROM text_tutorials WHERE ID <> ID
[EL Fine]: sql: 2016-06-29 03:29:18.936--ServerSession(2113257970)--Connection(1688125903)--SELECT ID FROM youtube_tutorials WHERE ID <> ID
[EL Fine]: sql: 2016-06-29 03:29:19.619--ServerSession(2113257970)--Connection(585968463)--SELECT ID, alexa_global_rank, chapters_studied, date_finished, date_started, days_spent, LANGUAGE, LEVEL, NAME, percent_completed, personal_rating, total_chapters, URL FROM text_tutorials
But everything that is displayed in my jsp is just html title and table header, but no data is displayed from the model:
List of Text Tutorials on Spring:
ID Name URL Alexa Global Rank Total Chapters % Completed
JSTL is included in pom.xml:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
I've read through similar questions here but none seems to be specific to my case. I'm going really desperate over this already so any advice would be highly appreciated!
UPD. Here is the implementation of findAll() method of the service:
package io.spring.learn.proc;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import org.springframework.stereotype.Repository;
@Repository
public class TextTutorialDaoImpl implements TextTutorialDao {
@PersistenceContext
private EntityManager em;
@Override
public List<TextTutorial> findAll() {
TypedQuery<TextTutorial> query = em.createQuery("Select txt from TextTutorial txt", TextTutorial.class);
return query.getResultList();
}
...
}
and the service implementation:
package io.spring.learn.proc;
import java.util.List;
import javax.inject.Named;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@Named
public class TextTutorialServiceImpl implements TextTutorialService {
@Inject
private TextTutorialDao txtDao;
@Override
public List<TextTutorial> findAll() {
return txtDao.findAll();
}
...
}
textTutorialListon the JSP? i.e.${fn:length(textTutorialList)}