<c:out/>で出力すれば勝手にエスケープしてくれる。
下記の文字がエスケープされる。
エスケープ前 | エスケープ後 |
---|---|
< | < |
> | > |
& | & |
' | ' |
" | " |
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<% request.setAttribute("test", "JSTLテスト&\"<br>"); %>
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<c:out value="${test}" />
</body>
</html>
出力結果(ブラウザ)
JSTLテスト&"<br>
ブラウザからソースの表示をしてみるとエスケープされているのがわかる。
JSTLテスト&"<br>
「escapeXml="false"」を指定する。
<c:out value="${test}" escapeXml="false" />
「JSTLテスト&\"<br>」を出力すると、以下のように<br>はそのまま改行タグとして解釈される。
JSTLテスト&"
HTML上のソースは以下のようになっている。
JSTLテスト&"<br>