[JSTL] < c:if >, < c:choose > 태그 사용법


[JSTL] , 태그 사용법

How to use if-else option in JSTL



조건

  • jsp 페이지 상단에 아래의 코드를 선언 하고 사용한다.
<%@ taglib uri="http://java.sun.com/sjp/jstl/core" prefix="c" %>

< c:if >

  • jstl에서 조건에 따른 분기를 처리할 수 있는 태그로 < c:if >와 < c:choose >가 있습니다.
  • 태그 - test 속성내의 EL 의 결과가 참이면 실행됩니다. else 구문은 없습니다.
  • 예제
<c:set var="name" value="강호동" />
   <c:if test="${nae eq '강호동'}">
       <c:out value="${str}" />
   </c:if>
  • 위의 코드는 변수 name의 값이 “강호동” 이면 출력합니다.

  • < c:if > 태그에 사용될 수 있는 속성은 다음 세 가지 입니다.

    • test : 필수 속성으로 속성값으로 EL 비교식을 가집니다.
    • var : 조건 결과를 저장할 변수를 지정합니다.
    • scope : 조건 결과를 저장할 변수의 저장 scope을 지정합니다.
<c:if test="${name eq '강호동'}" var="nameHong" scope="session">
    ....
</c:if>
  • 위 코드는 test 속성의 결과를 nameHong 변수 이름으로 session 영역에 저장합니다. 동일 세션의 다른 페이지에서 결과를 찾을 수 있습니다.


test속성에 사용될 비교 연산자

  • eq(==) : 문자열 또는 숫자가 같으면 참입니다. null 또는 빈 문자열 인지도 확인할 수 있습니다.
<c:if test="${name == '강호동'}">

<c:if test="${name eq '강호동'}">

<c:if test="${name == null}">

<c:if test="${name eq null}">

<c:if test="${num == 5}">

<c:if test="${num eq 5}">
  • ne(!=) : 문자열 또는 숫자가 다르면 참입니다.
<c:if test="${name != '강호동'}">

<c:if test="${name ne '강호동'}">

<c:if test="${num != 5}">

<c:if test="${num ne 5}">
  • empty : List 또는 배열이 비어있거나, 문자열이 null 또는 빈 문자열이면 참을 반환합니다. 숫자 0은 eq(==) 로 비교해야 합니다.
<c:if test="${empty name}">
  • not empty : List 또는 배열이 비어 있지 않을 경우, 문자열이 값이 있을 경우 참을 반환합니다.
<c:if test="${not empty name}">


논리연산자

  • 비교연산자의 조합으로 논리 연산을 할 수 있는 논리연산자 입니다.

  • and (&&) : 모두 참일때 참이 됩니다.

<c:if test="${a > b and c < d}">

<c:if test="${a > b && c < d}">
  • or (II) : 둘중 하나라도 참이면 참이 됩니다.
<c:if test="${a > b or c < d}">

<c:if test="${a > b || c < d}">
  • not (!) : 논리를 반전합니다.
<c:if test="${not a == ''}">

<c:if test="${! a == ''}">
  • 괄호를 사용하여 논리연산의 우선 순위를 지정할 수 있습니다.
<c:if test="${a > b && (b > c || d < e)}">

< c:choose > 태그

  • < c:choose > 태그는 조건에 따른 여러곳으로 분기 가능하고, 조건이 맞은 것이 없을 경우 기본 분기를 제공할 수 있습니다.
<c:choose>
   <c:when test="${name eq '짱구'}"> 
       ... 
   </c:when>

   <c:when test="${name eq '유리'}"> 
       ... 
   </c:when>

   <c:otherwise> ... </c:otherwise>
</c:choose>
  • 위 코드는 이름이 “짱구”, “유리” 일 경우 분기 하고 그 외의 경우에는 < c:otherwise > 로 분기 합니다.