无法使用spring迭代jstl中的字符串列表

时间:2015-07-11 21:30:57

标签: spring jsp spring-mvc jstl

我正在尝试学习Spring / mvc框架。我创建了一个基本的例子,我在屏幕上打印一个简单的字符串,这很好,我现在想迭代字符串列表但没有出现。看起来好像我的foreach正在整个系列中看而不是内部的元素。我在循环中打印了一个额外的字符,只显示了一个字符,但有4个项目。

在没有foreach的情况下将ti直接打印到屏幕上,以[a,b,c,d]的方式显示内容。

我不确定我做错了什么,感谢任何帮助。

控制器:

    @Controller
public class HelloController {

    //the request mapping simply says, what url am i tied to?
    @RequestMapping(value = "/greeting") //defines the url and the method 
it is tied to
    public String sayHello(Model model){ //model is a key-value pair.

        List<String> stringList = new ArrayList<String>();
        stringList.add("A");
        stringList.add("B");
        stringList.add("C");
        stringList.add("D");

        model.addAttribute("greeting", "Hello, World"); //greeting is key, value hello world
        //the jsp page will reference back to 'greeting' as above.
        model.addAttribute("stringList", stringList);
        model.addAttribute("stringlist2", "stringlist2");

        return "hello";//this ties us to the jsp pages
    }
}

JSP:

<h1>
    ${greeting}
    ${stringList}
    ${stringlist2}
    <%--this maps to the model attribute greeting in the controller.--%>
</h1>

<c:forEach items="${stringList}" var="elt">
    <div>:<c:out value="${elt}"/></div>
</c:forEach>

页面上的结果:

Hello, World [A, B, C, D] stringlist2
: //this is the extra char I'm printing in the foreach.

1 个答案:

答案 0 :(得分:2)

  

查看来源显示:<c:foreach items="[A, B, C, D]" var="elt"> <div>:<c:out value=""></c:out></div> </c:foreach>

您的服务器无法查找,解析和执行JSTL标记。

如果您忘记在JSP顶部声明c名称空间前缀,则会发生这种情况:

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

如果它仍然不起作用,或者你得到一个例外“The absolute uri: http://java.sun.com/jstl/core cannot be resolved”,那么如果你使用的是侏罗纪JSTL 1.0(这些天真的很意外)或者你忘了安装JSTL了。有关安装说明和其他问题排查提示,请转至our JSTL wiki page