Значение модели ModelAndView не отображается в JSP через EL

Значение модели ModelAndView не отображается в JSP через EL

проблема

При разработке Spring MVC разработчик пытается установить значение в модель и отобразить значение в JSP через EL, например${msg}, но он просто выводит результат как есть -${msg}, а не « значение »хранится в модели. EL просто не работает в JSP, почему?

Контроллер Spring

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class ABCController extends AbstractController{

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        ModelAndView model = new ModelAndView("HelloWorldPage");
        model.addObject("msg", "hello world");

        return model;
    }

}

Страница JSP

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


             ${msg}

Решение

Это наиболее часто задаваемый вопрос в большинстве примеров приветственного мира Spring MVC. На самом деле это вызвано старым дескриптором JSP 1.2.

1. JSP 1.2

Если вы используетеold JSP 1.2 descriptor, defined by DTD, например
web.xml




//...

EL отключен или игнорируется по умолчанию, вы должны включить его вручную, чтобы он выводил хранилище значений в модели «msg».

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


<%@ page isELIgnored="false" %>


           ${msg}

2. JSP 2.0

Если вы используетеstandard JSP 2.0 descriptor, defined by w3c schema, например
web.xml


//...

EL включен по умолчанию, и вы должны увидеть значение, хранящееся в модели «msg», то есть «hello world».