[JSP] 표현식(JSTL) 안에서 var 변수를 사용할 수 있을까? ["${}" 안에서 스크립트 변수 사용가능 여부]

2022. 8. 22. 22:57·◎ Java/JSP📋
728x90


- 표현식(JSTL) 안에서 var 변수를 사용할 수 있을까?

우리는 jsp에서 "${}" 형태의 표현식(expression)을 많이 보았을 것이다.
이 표현식은 컨트롤러에서 지정한 값을 사용하기 위해, tag로 함수를 호출하기 위해 사용한다.

 

/* 표현식을 이용하여 값을 불러온다 */
var bno = "${bno}";

/* 객체로 값을 불러올 수도 있다 */
var rno = "${reply.rno}";

/* 아래와 같이 함수도 사용 가능 */
var addDay = "${ufn:addDays('20220822', 5)}";

/* 표현식으로 불러온 함수의 파라미터로는 컨트롤러 값도 가능하다 */
var count = "${ufn:count(reply.rno,'20220822')}";

 

만약, 표현식으로 불러낸 함수의 파라미터로 스크립트 변수를 사용하고 싶다면?

 

/* 숫자 부분에 스크립트의 변수를 넣고 싶다 */
var count = "${ufn:count(board.bno, 숫자}";

var num = 5; /* 스크립트에서 선언한 변수 */

/* num이라는 문자열로 인식 */
var count = "${ufn:count(board.bno, 'num'}";

/* num을 찾을 수 없다고 함 */
var count = "${ufn:count(board.bno, num}";

/* 문법적인 에러 발생 */
var count = "${ufn:count(board.bno," +  num + "}";

/* 백틱('`')을 사용해도 안되더라 */
var count = `${ufn:count(board.bno, num}`;
var count = `${ufn:count(board.bno, "num"}`;

/* 이건 당연히 말도 안되는거고.. */
var count = "${ufn:count(board.bno, ${num}}";

 

표현식 안에서는 스크립트의 변수를 사용할 수 없었다.

위에 예시는 단순히 초기화 한 것이지만..
만약 스크립트 내에서 함수로 가공한 값을 표현식 안에서 쓰고 싶다면 미쳐버릴 것이다.

 

왜 사용할 수 없는 것인가?

 

표현식(JSTL)과 스크립트의 실행 시점이 다르기 때문이다.

 

1) jsp가 실행될 때는 java 코드인 JSTL이 먼저 실행된다.
2) 이후 실행결과를 문자열 형태로 브라우저로 전송이 되고,
3) 브라우저에서 문자열을 parsing을 하여 JavaScript가 실행된다.

 

즉, JSTL이 실행될 때는 스크립트가 실행되기 전이기 때문에 스크립트의 변수를 사용할 수 없는 것이다.
→ 반대로 스크립트의 변수는 표현식(JSTL)에서 사용할 수 있다.

태그로 쓴 함수 내에 파라미터로 스크립트 변수를 쓰고 싶다면 ajax 사용을 추천한다.

- 참고 자료

 

OKKY - script에 선언한 var 변수 jstl에서 사용 방법

아래의 코드처럼 script에서 선언한 변수 x를 jstl인 c:if에서 test안에서 사용하고 싶습니다.어떻게 해야 test안에 x를 넣을 수 있나요? <script> var x = 1; </script> <c:if test = ?> < /c:if

okky.kr


728x90
'◎ Java/JSP📋' 카테고리의 다른 글
  • [JSP] 표현식(JSTL) 안에서 삼항연산자 쓰는 방법 [JSTL 문자열 연결하기]
  • [JSP] Ajax로 보낸 JSON 데이터 서블릿(Servlet)으로 받아오기 [JSON 인코딩 깨짐 해결하기]
  • [JSP] EL과 useBean을 이용한 파라미터 처리 [EL 파라미터 처리, useBean 파라미터 바인딩]
  • [JSP] 회원정보 : 검색 기능 [회원의 이름을 검색할 수 있는 기능 구현]
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (937)
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (32)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (40)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (4)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (89)
        • 백준(BOJ)👨🏻‍💻 (70)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
        • 알고리즘(Algorithm)🎡 (10)
      • ◈ Study (102)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (6)
      • ◈ 공부모임 (39)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (11)
      • ◈ 자격증 공부 (37)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (113)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (44)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 태그

    Project
    자바스크립트
    BOJ
    CSS
    프로그래밍
    일상
    Error Note
    코딩
    Database
    Java
    백준
    jsp
    html
    백준 티어
    Oracle
    spring
    코딩 테스트
    javascript
    SQL
    꿀팁
  • 250x250
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[JSP] 표현식(JSTL) 안에서 var 변수를 사용할 수 있을까? ["${}" 안에서 스크립트 변수 사용가능 여부]
상단으로

티스토리툴바