728x90
JSP 페이지에서 JavaScript의 템플릿 리터럴을 사용할 때 발생하는 EL(Expression Language)과의 충돌 문제를 해결하는 방법을 알아보겠습니다.
문제의 원인
JSP의 EL과 JavaScript의 템플릿 리터럴은 모두 ${}
구문을 사용합니다.
이로 인해 서버에서 JSP를 처리할 때 JavaScript의 템플릿 리터럴을 EL로 잘못 해석하여 원하는 결과를 얻지 못하는 문제가 발생합니다.
해결 방법
- 이스케이프 처리
템플릿 리터럴의${}
앞에 백슬래시(\
)를 추가하여 이스케이프 처리합니다.
console.log(`\${year}-\${month}-\${date}`);
- 중첩 표현식 사용
EL 표현식 내부에 JavaScript 템플릿 리터럴을 넣어 중첩 표현식을 만듭니다.
var slackMsg1 = `📣${'${ntcMenu}'} 게재알림`;
- JSTL의 out 태그 활용
JSTL의<c:out>
태그를 사용하여 EL 표현식을 출력합니다.
<c:out value="${'${variableName}'}" escapeXml="false" />
주의사항
- JSP의 EL은 서버에서 먼저 처리되고, JavaScript의 템플릿 리터럴은 브라우저에서 나중에 처리됩니다.
- 항상 보안에 유의하여 사용자 입력값을 처리해야 합니다.
728x90
'JSP' 카테고리의 다른 글
JSTL의 <c:url> 태그 (0) | 2025.02.27 |
---|---|
Servlet Filter의 모든 것 (0) | 2025.02.26 |
EL과 JSTL 완벽 가이드 (0) | 2025.02.26 |
스크립틀릿(Scriptlet) (0) | 2025.02.20 |
Spring MVC에서 @RequestParam과 @ModelAttribute의 차이점 (0) | 2025.02.19 |