У меня проблема с заполнением списка с помощью Spring MVC. Я использовал JSTL для отображения списка в моем представлении, но он ничего не отображал. Оказывается, представление не получало ничего от контроллера.
Сначала я предположил, что это могли быть некоторые проблемы со службой или БД, поэтому я прокомментировал код, который использует службу, и поместил в нее точные данные, чтобы выяснить проблему. Но даже с этим, это все еще не работает.
itemController
public class ItemController {
/*
@Autowired
private ItemService itemService;
*/
@RequestMapping(value = {"/home"}, method= RequestMethod.GET)
public ModelAndView showItems(ModelAndView model, HttpSession session) {
//List<Item> items = itemService.findAllItems();
List<Item> items = new ArrayList<Item>();
Item itemOne = new Item();
itemOne.setId(1);
itemOne.setName("piano");
Item itemTwo = new Item();
itemTwo.setId(2);
itemTwo.setName("guacamole");
items.add(itemOne);
items.add(itemTwo);
model.addObject("items", items);
model.setViewName("home");
return model;
}
}
home.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
<script type="text/javascript"></script>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Store</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" >
<style>
.container{
display:flex;
justfy-content: center;
}
</style>
</head>
<body>
<div class="jumbotron">
<div class="container text-center">
<h1>THE STORE</h1>
</div>
</div>
<div class="container-fluid bg-3 text-center">
<h2>Featured Products</h2>
<div class="row">
<c:forEach var="item" items="${items}">
<div class="col-sm-3">
<p> <c:out value="${item.name}" /> </p>
</div>
<br>
</c:forEach>
<c:if test="${not empty items}">
<ul>
<c:forEach var="item" items="${items}">
<li> ${item.name}</li>
</c:forEach>
</ul>
</c:if>
<c:if test="${empty items}">
<p>EMPTY ITEMS </p>
</c:if>
</div>
</div>
</body>
</html>