JSTL(JavaServer Pages Standard Tag Library)의 <c:if> 태그는 지정한 표현식을 평가하고, 그 결과가 true일 경우에만 태그 본문의 내용을 화면에 출력합니다. 자바 코드 없이 JSP 페이지에서 조건 분기를 처리할 수 있어 코드의 가독성과 유지보수성이 크게 향상됩니다.
c:if 태그의 주요 속성
<c:if> 태그는 다음과 같은 속성을 제공합니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| test | 평가할 조건식 | 필수 | 없음 |
| var | 조건 평가 결과를 저장할 변수의 이름 | 선택 | 없음 |
| scope | 조건 결과를 저장할 변수의 유효 범위 | 선택 | page |
속성 상세 설명
test는 EL(Expression Language) 표현식으로 조건을 작성하며, 이 값이 true일 때만 태그 내부의 내용이 렌더링됩니다. var 속성을 사용하면 조건의 평가 결과(Boolean 값)를 변수에 저장해 이후 페이지의 다른 위치에서 재사용할 수 있습니다. 이때 scope 속성으로 page, request, session, application 중 원하는 범위를 지정할 수 있으며, 기본값은 page입니다.
c:if 태그 사용 예제
다음은 세션 스코프에 급여 값을 설정한 뒤, 그 값이 2000보다 클 때만 메시지를 출력하는 예제입니다.
<%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title><c:if> Tag Example</title>
</head>
<body>
<c:set var = "salary" scope = "session" value = "${2000*2}"/>
<c:if test = "${salary > 2000}">
<p>My salary is: <c:out value = "${salary}"/><p>
</c:if>
</body>
</html>위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
My salary is: 4000
예제 동작 원리
먼저 <c:set> 태그를 통해 session 스코프에 salary라는 변수를 생성하고, EL 표현식 ${2000*2}의 연산 결과인 4000을 저장합니다. 이후 <c:if> 태그의 test 속성에서 ${salary > 2000} 조건을 평가하는데, 4000은 2000보다 크므로 조건이 true가 되어 태그 본문이 실행됩니다. 만약 조건이 false라면 본문 내용은 화면에 전혀 출력되지 않습니다.
참고 사항
JSTL에는 if-else 구문이 직접적으로 존재하지 않습니다. 여러 조건을 분기 처리해야 하는 경우에는 <c:choose>, <c:when>, <c:otherwise> 태그를 함께 사용하는 것이 좋습니다. 또한 <c:if> 태그를 사용하려면 JSP 페이지 상단에 반드시 core 태그 라이브러리를 taglib 디렉티브로 선언해야 한다는 점도 기억하세요.