#java #html #sql #spring-boot #jstl
#java #HTML #sql #spring-boot #jstl
Вопрос:
У меня есть база данных с существующей таблицей. Мне удалось успешно подключить базу данных к программе Spring Boot в IntelliJ, но у меня возникли проблемы с заполнением HTML-таблицы данными из базы данных.
Это мой класс событий:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "events")
public class Events {
@Id
@Column(name = "id")
private int id;
@Column(name = "description")
private String description;
@Column(name = "startdate")
private String startdate;
@Column(name = "enddate")
private String enddate;
public Events(){
}
public Events(int id, String description, String startdate, String enddate){
this.id = id;
this.description = description;
this.startdate = startdate;
this.enddate = enddate;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getStartdate() {
return startdate;
}
public void setStartdate(String startdate) {
this.startdate = startdate;
}
public String getEnddate() {
return enddate;
}
public void setEnddate(String enddate) {
this.enddate = enddate;
}
}
Это мой основной контроллер
import Models.Events;
import Models.EventsRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class MainController {
@Autowired
EventsRepo eventsRepo;
@RequestMapping("/")
public ModelAndView doHome(){
ModelAndView mv = new ModelAndView("index");
mv.addObject("eventslist", eventsRepo.findAll());
return mv;
}
}
И это мой файл index.jps:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<!DOCTYPE html>
<html>
<head>
<title>Homework 3</title>
</head>
<body>
<h2>Events Table</h2>
<table>
<tr>
<th>Event Description</th>
<th>Start Date and Time</th>
<th>End Date and Time</th>
</tr>
<c:forEach var = "events" items = "${eventslist}">
<tr>
<td>${events.getDescription()}</td>
<td>${events.getStartdate()}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
Я думаю, что проблема должна быть в этой части кода:
<c:forEach var = "events" items = "${eventslist}">
<tr>
<td>${events.getDescription()}</td>
<td>${events.getStartdate()}</td>
</tr>
</c:forEach>
Я протестировал этот цикл forEach, используя только
<td>test</td>
Но он по-прежнему не заполнял веб-приложение, когда я его обновлял. Я прослушал разные лекции, которые читал мой профессор, и также просмотрел его код. Код forEach — это то, чему он нас научил, но по какой-то причине он не дает мне того же результата.
Я протестировал соединение с базой данных, и оно работает. Я также связал базу данных с MySQL workbench, чтобы убедиться, что таблица, которую я ищу, существует и что она заполнена данными. Он существует и содержит 15 строк данных.
Буду признателен за любую помощь или рекомендации по тому, что я могу прочитать или посмотреть.
Комментарии:
1. Привет, и добро пожаловать в StackOverflow. На первый взгляд, попробуйте сделать это без пробелов вокруг знаков «=» — ie:
<c:forEach var="events" items="${eventslist}">
. Это потому, что JSTL имитирует HTML или XML, поэтому это не похоже на код Java, где пробелы эффективно игнорируются.2. Просто попробовал, и никаких кубиков. Он по-прежнему ничего не заполняет. Я также пытался написать <td>hello</td> внутри цикла forEach . Просто чтобы посмотреть, проходит ли он через нее и печатает «привет» в строках таблицы. Он не печатал привет или данные из таблицы.
3. Следующий шаг — выяснить, не проблема ли это с запросом или отображением — поэтому извлеките переменную
eventsRepo.findAll());
into в список, чтобы вы могли проверить размер списка.4. Я, честно говоря, не уверен, как это сделать. Могу ли я просто создать объект списка в моем главном контроллере? Когда я пытаюсь это сделать и предварительно сформировать list.add(), он просто выдает ошибки.
5. Просто есть
List<Events> EventList = eventsRepo.findAll(); mv.addObject("eventslist", eventList);
. Затем вы можете установить точку останова при вызове AddObject, чтобы увидеть размер списка событий.