2014-03-26 73 views
1

我是Spring框架和使用jstl的新手。我在jsp文件上顯示數據時遇到問題。這裏是我的代碼jsp中未顯示的值

控制器

@RequestMapping(method = RequestMethod.GET, value = "/test") 
public ModelAndView getTest(HttpServletRequest request) { 
    List<Place> places = PlacesService.search(types, 48.137048, 11.57538599, 10000); 
    for(Place place:places){   

     System.out.println("Name: " + place.getName()); 
     System.out.println("Rating: " + place.getRating()); 
     System.out.println("Categories: " + place.getTypes()); 
     counter++; 
    } 
    ModelAndView model = new ModelAndView("test"); 
    model.addObject("places", places); 
    return model; 
} 

在我test.jsp的

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<html> 
<body> 
Hello World! 
<c:forEach items="${places}" var="place"> 
    <c:out value="${place.name}"/> 
    <c:out value="${place.rating}"/> 
    <c:out value="${place.types}"/> 
</c:forEach> 
<c:forEach begin="6" end="15" var="val"> 
    <c:out value="${val}"/> 
</c:forEach> 

</body> 
</html> 

對於這兩個for循環中,我得到${place.name}${place.rating}${place.types}${val}打印。但System.print.out()給了我所需的值。

我做錯了什麼?

+0

您使用的是什麼Servlet容器?哪個版本? –

+0

對不起,我不知道它是一個簡單的maven項目 – Wearybands

+0

您使用的是Tomcat嗎?哪個版本? –

回答

2

好的,我找到了解決方案。也許它幫助別人在未來

如果您使用的是舊的JSP 1.2的描述符,通過DTD定義,例如 的web.xml

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
//... 
</web-app> 

的EL被禁用或默認被忽略掉,你必須手動啓用它,以便它將在「msg」模型中輸出值存儲。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<html> 
<head> 
    <%@ page isELIgnored="false" %> 
</head> 
<body> 
     ${msg} 
</body> 
</html> 

如果使用標準的JSP 2.0描述符,由W3C模式中定義,例如 的web.xml

<web-app id="WebApp_ID" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    //... 
</web-app> 

的EL默認啓用,你應該看到存儲在值「味精」型號