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」です。