2009년 5월 19일 화요일

[JSTL Tip] <c:if>, <c:choose>, <c:out>를 사용한 조건예제

JSTL을 사용하면서 가장 많이 애용되는 태그는 <c:if>와 <c:choose> 인거 같다. 하지만 JSTL의 특성상 쉽게 외워지지 않게 된다. 나한테 약간은 고질적인 면이당^^;; 자주 사용하는게 아니니 할 때마다 찾아보게 된다. 그래서 내 스스로 정리하기로 마음을 먹었다.

일단 <c:if> 태그에 대해서 알아보자.

<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>

<%-- Simple if conditions --%>
<c:if test='${param.p == "someValue"}'>
객체 param.p 와 someValue의 값이 같으면 이 부분이 출력된다.
</c:if>
<c:if test='${param.p}'>
param.p의 값이 'true'이면 이 부분이 출력된다.
</c:if>
<c:if test='${empty param.p}'>
param.p의 값이 null이면 이 부분이 출력된다.
</c:if> 
<c:if test='${!empty param.p}'>
param.p의 값이 null이 아니면 이 부분이 출력된다.
</c:if>


자바 코드에서 if/else 문의 사용은 누구나 알 수 있다. 하지만 JSTL에서는 if/else의 구문을 <c:choose> 태그를 사용해야 구현이 가능하다. 다음은 그 예제이다.

<%-- A simple if/else condition --%>
<c:choose>
<c:when test='${param.p == "someValue"}'>
param.p와 'someValue'의 값이 같으면 이 부분이 출력된다.
</c:when>
<c:otherwise>
if/else문에서 else에 해당하는 즉, param.p와 'someValue'의 값이 다르면 이 부분이 출력된다.
</c:otherwise>
</c:choose>


다음은 이 보다 조금더 복잡한 다중조건을 이용한 <c:chosse> 태그의 예제이다.

<c:choose>
<c:when test='${param.p == "0"}'>
param.p의 값이 '0'이면 이 부분이 출력된다.
</c:when>
<c:when test='${param.p == "1"}'>
param.p의 값이 '1'이면 이 부분이 출력된다.
</c:when>
<c:otherwise>
param.p이 값이 '0', '1'이 아니면 이 부분이 출력된다. 즉, else의 마지막 구문이다.
</c:otherwise>
</c:choose>


이 뿐만 아니라, <c:out> 태그도 조건에 의한 템플릿 텍스트를 생성하여 출력할 수 있다. 만약 속성값이 null이면, 디폴트 값이 생성된다. 다음은 이에 해당하는 예제이다.

<%-- Default value in an attribute --%>
<c:out value='${param.p}' default="p의 값이 null이면 default로 지정된 이 값이 출력된다." />

<%-- Default value in the body content --%>
<c:out value='${param.p}'>
p의 값이 null이면 이 부분이 출력된다.
</c:out>

댓글 없음: