Der Modellwert von ModelAndView wird in JSP nicht über EL angezeigt

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.