ModelAndViewのモデル値はELを介してJSPに表示されません

ModelAndViewのモデル値は、ELを介してJSPに表示されません

問題

Spring MVC開発では、開発者はモデルに値を設定し、ELを介してJSPに値を表示しようとします(例:${msg})が、結果をそのまま出力します–${msg}、「モデルに格納されている「値」。 ELがJSPで機能しないのはなぜですか?

スプリングのコントローラー

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 Hello Worldの例でよくある質問です。 実際には、古い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」です。