Значение модели 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».