[JSTL] Tag가 jsp 화면에 그대로 노출될 경우, escapeXml
- 프로그램언어/자바(Java)
- 2016. 8. 29.
스프링으로 웹을 구현하는 경우, jsp 출력은 십중팔구 JSTL을 사용할 것이다.
JSTL로 로직을 구현하는 경우도 존재하지만, 왠만해서는 자바에서 비즈니스 로직을 구현하여 페이지에 전송하게 되는데.. 태그를 붙인 상태로 보내는 경우가 존재한다. (ex: 하이라이트 태그)
이럴 경우, 아래와 같은 경우가 발생한다.
검색어를 하이라이트 처리하여 전달하였지만, 하이라이트 태그가 화면에 그대로 노출되었다.
위에 적힌, 전화번호, 사람이름 등은 가라로 만든 가상의 인물이다.
JSTL로 <c:out value="값" /> 처리를 할 때, 태그처리를 자동으로 해서 생기는 문제이다.
기본적으로 escapeXml 이라는 값이 true로 처리가 되고, 이 속성은 <, > 와 같은 값들을 <, > 등으로 변경하여 화면에 뿌려주게 된다.
하지만, 태그를 원하는 대로 뿌려줘야 할 경우도 존재하니 이럴 경우 escapeXml="false" 처리를 해주면 된다.
As-Is
<c:out value="${값}" />
To-Be
<c:out value="${값}" escapeXml="false" />
위와 같이, escape를 사용하지 않는다로 명시하면
하이라이트 태그가 정상적으로 먹히는 것을 확인할 수 있다.
중요포인트
escapeXml을 설정하지 않거나, true로 설정할 경우, 출력 문자열에 포함된 HTML 특수 문자(예: <, >, &, ' 또는 ")는 해당되는 문자 엔티티 코드로 변환되고, JSP 페이지에서 생성된 HTML 페이지에 적절히 표시됩니다.
'프로그램언어 > 자바(Java)' 카테고리의 다른 글
[Java] List형 쉽게 정렬하는 방법 (0) | 2018.12.24 |
---|---|
[Java] MySQL Batch 처리 방법 (0) | 2018.12.21 |
[Java] 사이트 데이터를 읽는 2가지 방법 (0) | 2018.08.13 |
[Java] SHA-256 해싱(Hashing) 알고리즘 사용법 (1) | 2018.08.07 |
[JAVA] JAVA 파일 읽기, FileReader, Files.readAllLines (0) | 2016.09.19 |