Der Modellwert von ModelAndView wird in JSP nicht über EL angezeigt
Problem
In der Spring MVC-Entwicklung versuchen Entwickler, einen Wert in ein Modell zu setzen und den Wert in JSP über EL anzuzeigen, z. B.${msg}, aber das Ergebnis wird nur so ausgegeben, wie es ist -${msg}, nicht das „ Wert “im Modell gespeichert. Die EL funktioniert einfach nicht in JSP, warum?
Spring's Controller
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-Seite
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ${msg}
Lösung
Dies ist die häufig gestellte Frage in den meisten Spring MVC hallo Weltbeispielen. Eigentlich liegt es am alten JSP 1.2-Deskriptor.
1. JSP 1.2
Wenn Sieold JSP 1.2 descriptor, defined by DTD verwenden, z. B.
web.xml
//...
Die EL ist standardmäßig deaktiviert oder wird ignoriert. Sie müssen sie manuell aktivieren, damit der Wertespeicher im Modell "msg" ausgegeben wird.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page isELIgnored="false" %> ${msg}
2. JSP 2.0
Wenn Siestandard JSP 2.0 descriptor, defined by w3c schema verwenden, z. B.
web.xml
//...
Die EL ist standardmäßig aktiviert, und Sie sollten den im Modell "msg" gespeicherten Wert sehen, der "Hallo Welt" ist.