JSTL 표현식 안에서 자바스크립트 변수 사용 불가능

mnjjj__124·2023년 4월 21일
1

컨트롤러에서 응답으로 받은 값을 사용하기 위해 JSTL 표현식을 사용한다. 효율적으로 데이터를 활용하기 위해, JSTL 표현식에 직접적으로 javascript 변수를 사용하는 것은 불가능하다.

var testVar = "value";
var testFn = "${fn.contains(testString, ?)}";

JSTL 표현식 내의 ?에 javascript 변수인 testVar를 사용하려는 예시이고, 이 것은 불가능하다.

그 이유는 표현식(JSTL)과 javascript는 실행되는 시점이 다르기 때문이다.

Server Side Script와 Client Side Script는 실행 시점이 다르다.
JSTL은 Server Side Script이고 javascript는 Client Side Script이다.
Server Side Script가 Client Side script보다 우선적으로 실행 된다.

jsp가 실행될 때, java코드인 스크립틀릿(<% %>)과 JSTL이 먼저 실행된다. 실행 후 문자열 형태로 바뀌어 브라우저로 전송된다. 브라우저에서는 받은 문자열을 파싱하고 javascript를 실행한 후, html을 화면에 출력한다.

즉, JSTL이 실행되는 시점은 javascript가 실행되기 전이기 때문에 javascript에 JSTL 표현식을 사용할 수 있지만, JSTL 표현식에 javascript를 사용할 수 없는 것이다.



참고

https://yermi.tistory.com/entry/JSP-%ED%91%9C%ED%98%84%EC%8B%9DJSTL-%EC%95%88%EC%97%90%EC%84%9C-var-%EB%B3%80%EC%88%98%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%A0-%EC%88%98-%EC%9E%88%EC%9D%84%EA%B9%8C-%EC%95%88%EC%97%90%EC%84%9C-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%B3%80%EC%88%98-%EC%82%AC%EC%9A%A9%EA%B0%80%EB%8A%A5-%EC%97%AC%EB%B6%80
https://okky.kr/questions/425026

0개의 댓글