Проблема с чтением из таблицы в базе данных с использованием Spring Boot

#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, чтобы увидеть размер списка событий.