使用 Spring 在 JSP 上显示值列表
Display list of values on JSP using Spring
我想在 jsp 视图中显示我的值列表,但我无法执行此操作。
下面是我的控制器 class,它只是将列表添加到 ModelAndView
地图,然后重定向到我的 index.jsp
页面。
雇员控制器
@Controller
public class EmployeeController {
@RequestMapping(value={"/employee"}, method = RequestMethod.GET)
public String listEmployee(){
System.out.println("Kontroler EmployeeController");
LinkedList<String> list = getList();
ModelAndView map = new ModelAndView("index");
map.addObject("lists", list);
return map.getViewName();
}
private LinkedList<String> getList(){
LinkedList<String> list = new LinkedList<>();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
return list;
}
}
index.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Welcome to Spring Web MVC project</title>
</head>
<body>
<h1>Index page</h1>
<h1>${msg}</h1>
<a href="/MavenHello/employee">Zaměstnanci</a>
</body>
<c:if test="${not empty listEmployee}">
<ul>
<c:forEach var="listValue" items="${listEmployee}">
<li>${listValue}</li>
</c:forEach>
</ul>
</c:if>
我能够访问控制器,因为每次我点击 "Zaměstnanci"
,System.out.println("Kontroler EmployeeController")
将 "Kontroler EmployeeController"
打印到 Tomcat 日志中,但是 index.jsp
页面是空白的。
拜托,有人可以给我建议吗?
只需将 Model
添加到您的控制器方法参数,然后将属性添加到此模型。
RequestMapping(value={"/employee"}, method = RequestMethod.GET)
public String listEmployee(Model model){
System.out.println("Kontroler EmployeeController");
LinkedList<String> list = getList();
model.addAttribute("lists", list);
return "index";
}
另一种方法是 return ModelAndView
而不是 String
@RequestMapping(value={"/employee"}, method = RequestMethod.GET)
public ModelAndView listEmployee(){
System.out.println("Kontroler EmployeeController");
LinkedList<String> list = getList();
ModelAndView map = new ModelAndView("index");
map.addObject("lists", list);
return map;
}
选择适合自己的方式即可。
并且还要将索引页中的 listEmployee
更改为 lists
,因为在 ModelAndView
中,您的属性是 lists
而不是 listEmployee`。
更改密钥名称并尝试:listEmployee --> lists as you are setting it as map.addObject("lists", list);
<ul>
<c:forEach var="listValue" items="${lists}">
<li>${listValue}</li>
</c:forEach>
</ul>
当您填充 ModelAndView
return ModelAndView itself and not map.getViewName()
时,return 只有名称的名称,没有文档中所述的数据:
public String getViewName() Return the view name to be resolved by the
DispatcherServlet via a ViewResolver, or null if we are using a View
object.
如下:
@RequestMapping(value = { "/employee" }, method = RequestMethod.GET)
public ModelAndView listEmployee() {
System.out.println("Kontroler EmployeeController");
LinkedList<String> list = getList();
ModelAndView map = new ModelAndView("index");
map.addObject("lists", list);
return map;
}
其次,您在索引页上缺少 jstl 标记 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
,并且您给列表的变量名称是 "lists",因此遍历 "lists" 而不是 "listEmployee",如下:
<html>
<head>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Welcome to Spring Web MVC project</title>
</head>
<body>
<h1>Index page</h1>
</body>
<c:if test="${not empty lists}">
<c:forEach items="${lists}" var="lists">
${lists}
</c:forEach>
</c:if>
此外,请确保您的类路径中有 JSTL 依赖项:
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
我想在 jsp 视图中显示我的值列表,但我无法执行此操作。
下面是我的控制器 class,它只是将列表添加到 ModelAndView
地图,然后重定向到我的 index.jsp
页面。
雇员控制器
@Controller
public class EmployeeController {
@RequestMapping(value={"/employee"}, method = RequestMethod.GET)
public String listEmployee(){
System.out.println("Kontroler EmployeeController");
LinkedList<String> list = getList();
ModelAndView map = new ModelAndView("index");
map.addObject("lists", list);
return map.getViewName();
}
private LinkedList<String> getList(){
LinkedList<String> list = new LinkedList<>();
list.add("Item 1");
list.add("Item 2");
list.add("Item 3");
return list;
}
}
index.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Welcome to Spring Web MVC project</title>
</head>
<body>
<h1>Index page</h1>
<h1>${msg}</h1>
<a href="/MavenHello/employee">Zaměstnanci</a>
</body>
<c:if test="${not empty listEmployee}">
<ul>
<c:forEach var="listValue" items="${listEmployee}">
<li>${listValue}</li>
</c:forEach>
</ul>
</c:if>
我能够访问控制器,因为每次我点击 "Zaměstnanci"
,System.out.println("Kontroler EmployeeController")
将 "Kontroler EmployeeController"
打印到 Tomcat 日志中,但是 index.jsp
页面是空白的。
拜托,有人可以给我建议吗?
只需将 Model
添加到您的控制器方法参数,然后将属性添加到此模型。
RequestMapping(value={"/employee"}, method = RequestMethod.GET)
public String listEmployee(Model model){
System.out.println("Kontroler EmployeeController");
LinkedList<String> list = getList();
model.addAttribute("lists", list);
return "index";
}
另一种方法是 return ModelAndView
而不是 String
@RequestMapping(value={"/employee"}, method = RequestMethod.GET)
public ModelAndView listEmployee(){
System.out.println("Kontroler EmployeeController");
LinkedList<String> list = getList();
ModelAndView map = new ModelAndView("index");
map.addObject("lists", list);
return map;
}
选择适合自己的方式即可。
并且还要将索引页中的 listEmployee
更改为 lists
,因为在 ModelAndView
中,您的属性是 lists
而不是 listEmployee`。
更改密钥名称并尝试:listEmployee --> lists as you are setting it as map.addObject("lists", list);
<ul>
<c:forEach var="listValue" items="${lists}">
<li>${listValue}</li>
</c:forEach>
</ul>
当您填充 ModelAndView
return ModelAndView itself and not map.getViewName()
时,return 只有名称的名称,没有文档中所述的数据:
public String getViewName() Return the view name to be resolved by the DispatcherServlet via a ViewResolver, or null if we are using a View object.
如下:
@RequestMapping(value = { "/employee" }, method = RequestMethod.GET)
public ModelAndView listEmployee() {
System.out.println("Kontroler EmployeeController");
LinkedList<String> list = getList();
ModelAndView map = new ModelAndView("index");
map.addObject("lists", list);
return map;
}
其次,您在索引页上缺少 jstl 标记 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
,并且您给列表的变量名称是 "lists",因此遍历 "lists" 而不是 "listEmployee",如下:
<html>
<head>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Welcome to Spring Web MVC project</title>
</head>
<body>
<h1>Index page</h1>
</body>
<c:if test="${not empty lists}">
<c:forEach items="${lists}" var="lists">
${lists}
</c:forEach>
</c:if>
此外,请确保您的类路径中有 JSTL 依赖项:
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>