0

我有一个简单的 Spring MVC 应用程序正在运行。我可以将字符串值从控制器传递给 jsp - 工作正常。

当要求控制器传递列表数据时,它无法在 jsp 视图中呈现。我已经在控制器端测试了数据,以确保它在传递给 jsp 之前不为空。

下面的代码摘录

@RequestMapping(method = RequestMethod.GET)
public ModelAndView printWelcome(){   

    ArrayList<String> listData = new ArrayList<String>();
    listData.add("Hello");
    listData.add("World");


    for(int i =0; i< listData.size(); i++){
        System.out.println(listData.get(i));
    }

    ModelAndView modelAndView = new ModelAndView("list");
    modelAndView.addObject("lists", listData);

    return modelAndView;                
}



<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <h1>Hello World!</h1>


    <ul>
        <c:forEach var="listValue" items="${listData}">
            <li>${listValue}</li>
        </c:forEach>
    </ul>


</body>

编辑:

问题是我的春季会议。(我认为 - 因为我还是新手。)

控制器返回一个 ModelAndView 对象,而实际上它应该只返回字符串视图名称。此外,工作控制器有一个带有参数 arg ModelView 的构造函数,需要将列表数据附加到其中。

    @RequestMapping(method = RequestMethod.GET)
public String printWelcome(ModelMap map){

    List<String> listData = new ArrayList<String>();
    listData.add("Hello");
    listData.add("World");

    map.addAttribute("lists", listData);
    //return list;
    return "list";

}
4

2 回答 2

2

尝试如下使用。您应该使用存储在模型中的密钥。它的行为类似于 HashMap。

<ul>
    <c:forEach var="listValue" items="${lists}">
      <li>${listValue}</li>
    </c:forEach>
</ul>
于 2015-03-02T14:20:04.920 回答
0

您必须将此行添加到顶部:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

然后,您可以将<c:其用作 taglib 前缀。

于 2020-06-12T15:09:18.027 回答