[JSTL] Tag가 jsp 화면에 그대로 노출될 경우, escapeXml

    스프링으로 웹을 구현하는 경우, jsp 출력은 십중팔구 JSTL을 사용할 것이다.

    JSTL로 로직을 구현하는 경우도 존재하지만, 왠만해서는 자바에서 비즈니스 로직을 구현하여 페이지에 전송하게 되는데.. 태그를 붙인 상태로 보내는 경우가 존재한다. (ex: 하이라이트 태그)



    이럴 경우, 아래와 같은 경우가 발생한다.

    검색어를 하이라이트 처리하여 전달하였지만, 하이라이트 태그가 화면에 그대로 노출되었다.

    위에 적힌, 전화번호, 사람이름 등은 가라로 만든 가상의 인물이다.


    JSTL로 <c:out value="값" /> 처리를 할 때, 태그처리를 자동으로 해서 생기는 문제이다.

    기본적으로 escapeXml 이라는 값이 true로 처리가 되고, 이 속성은 <, > 와 같은 값들을 &lt;, &gt; 등으로 변경하여 화면에 뿌려주게 된다.


    하지만, 태그를 원하는 대로 뿌려줘야 할 경우도 존재하니 이럴 경우 escapeXml="false" 처리를 해주면 된다.



    As-Is

    <c:out value="${값}" />


    To-Be

    <c:out value="${값}" escapeXml="false" />

    위와 같이, escape를 사용하지 않는다로 명시하면



    하이라이트 태그가 정상적으로 먹히는 것을 확인할 수 있다.



    중요포인트 

    escapeXml을 설정하지 않거나, true로 설정할 경우, 출력 문자열에 포함된 HTML 특수 문자(예: <, >, &, ' 또는 ")는 해당되는 문자 엔티티 코드로 변환되고, JSP 페이지에서 생성된 HTML 페이지에 적절히 표시됩니다.


    댓글

    Designed by JB FACTORY