잊지말자 unescapeHtml

Joy·2023년 9월 9일
1

에러인생

목록 보기
14/15

스마트에디터로 저장한 글을 출력할 때 html 태그가 그대로 문자열로 출력되는 일이 생겼다.

jsp에

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

이렇게 escapeXml="false"가 있음에도 불구하고. ㅎㅏ
escapeXml는 jstl의 c:out 태그 속성 중 하나인데 특수문자들을 변형시키지 않고 출력하기 위해 false로 설정한 것이었다.
그치만? 적용은 되지 않았고 ^^...


암튼 플젝 내 소스를 좀 뒤적여봤더니 cfn.tld 파일에 요런게 있었다.

<function>
    <description>remove escapeHtml</description>
    <name>unescapeHtml</name>
    <function-class>egovframework.com.util.Util</function-class>
    <function-signature>java.lang.String unescapeHtml(java.lang.String)</function-signature>
</function>

위에 해당하는 Util.java 파일 소스는 이거!

public static String unescapeHtml(String strVal) {
    String strRtn = StringEscapeUtils.unescapeHtml4(strVal);
    strRtn = StringEscapeUtils.unescapeHtml3(strVal);
    strRtn = strRtn.replaceAll("&apos;", "'");
    return strRtn;
}

그래서 jsp에

<c:out value="${cfn:unescapeHtml(contents)}" escapeXml="false">

이렇게 적용시켜줬더니 이쁘게 잘 나왔다. 만족만족

profile
👻

0개의 댓글