JSTL c:out not showing the variable's value

jsp, jstl, spring, spring-mvc, taglib

Solution

This is an E xpression L anguage issue. Your `${}` is not being resolved. This can happen for a number of reasons. One, and the most likely, is that your web.xml is declaring Servlet 2.3 and under. You'll have to specify 2.4+. Now, obviously, your Servlet container must also support that higher version.

Problem

I'm following a tutorial about spring and I'm supposed to set a variable in a controller in order to be printed within the jsp rendering the request. The code is as follows: ``` @Controller public class HelloController { @RequestMapping(value="/hello.htm") public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String now = (new Date()).toString(); return new ModelAndView("WEB-INF/views/hello.jsp", "now", now); } } ``` Then, the hello.jsp code is as follows: ``` <%@ page session="true"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <html> <body> <p>Greetings, it is now <c:out value="${now}" /></p> </body> </html> ``` I am expected to get an html showing this: ``` Greetings, it is now Mon Fri Dec 06 00:39:35 CET 2013 ``` But all I get is: ``` Greetings, it is now ${now} ``` I've checked everything twice (or even more!) but everything seems to be as the tutorial says but there must be something missing, I hope... What's wrong with my code?

Original source