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.