我正在尝试学习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.
答案 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。