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