2013-12-05 2 views
2

Я следую за учебником about spring, и я должен установить переменную в контроллере, чтобы печатать в jsp-рендеринге запроса. Код выглядит следующим образом:JSTL c: out, не отображающий значение переменной

@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); 
    } 
} 

Затем код hello.jsp выглядит следующим образом:

<%@ 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> 

Я ожидал получить HTML, показывая это:

Greetings, it is now Mon Fri Dec 06 00:39:35 CET 2013 

Но все Я получаю:

Greetings, it is now ${now} 

Я проверял e (или даже больше!), но все, кажется, так, как говорится в учебнике, но должно быть что-то не хватает, надеюсь ...

Что случилось с моим кодом?

+0

Я думаю, что вы закодированы контроллер привет неправильно. Теперь вам нужно вставить MAP с ключом. – Loc

+0

Я также пробовал следующий код без каких-либо успехов: 'Карта params = new HashMap (); params.put («now», now); ModelAndView mav = new ModelAndView ("hello.jsp"); mav.addAllObjects (params); return mav; ' –

+0

Пожалуйста, разместите свой полный web.xml. –

ответ

6

Это E xpression L проблема с ангажем. Ваш ${} не разрешен. Это может произойти по ряду причин. Один, и, скорее всего, это то, что ваш web.xml объявляет Servlet 2.3 и ниже. Вам нужно будет указать 2.4+. Теперь, очевидно, ваш контейнер Servlet также должен поддерживать эту более высокую версию.

+0

Это сработало! Я изменился на 2.5, как в учебнике, и теперь он анализирует выражения. Спасибо Сотириосу, ты ударил ноготь по голове! Я создал webapp, используя архетип maven, и по умолчанию вы получаете сервлет версии 2.3. –

+0

maven 3 все еще создает web.xml с сервлетом 2.3 –

2

Изменить это - подушечка библиотека плохо:

<!-- %@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>--> 
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
Смежные вопросы