[jstl] jstl 사용하기

프로그래밍/Web 2010. 1. 8. 16:41 Posted by galad
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<%@ page import="test.model.*" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="c_rt" uri="http://java.sun.com/jstl/core_rt" %>

<%
    //List<FileBrowsingInfo> fileBrowsingInfoList = (List<FileBrowsingInfo>)request.getAttribute("fileBrowsingInfoList");
%>

<c_rt:set var="fileBrowsingInfoList" value='<%=request.getAttribute("fileBrowsingInfoList")%>' />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>파일 목록</title>
</head>
<body>

<c:forEach items="${fileBrowsingInfoList}" var="info">
    <c:if test="${info.uploadCompleted}">
    </c:if>
    <c:if test="${!info.uploadCompleted}">
    </c:if>

    <c:out value="${info.name}"></c:out>
    <br />
   
    <c:set var="childList" value="${info.childList}"></c:set>
    <c:forEach items="${childList}" var="childInfo">
        &nbsp;&nbsp;&nbsp;&nbsp;
        <c:out value="${childInfo.fileName}"></c:out>
        <br />
    </c:forEach>
</c:forEach>

</body>
</html>

1. jstl 사용시의 변수 scope이 스크립틀릿의 변수와는 약간 다르단다. http://lonelycat.tistory.com/389
  그래서 c_rt:set을 이용해서 변수 정의. (value 가 들어가는 자리에 표현식을 쓰기 위해서는 RT 기반의 태그를 사용해야 된다.)

2.
<c:out value="${info.name}"></c:out> 에서 info 클래스에 name에 대한 getter가 존재해서 사용가능.
  마찬가지로 <c:set var="childList" value="${info.childList}"></c:set> 에서도 childList에 대한 getter가 존재(getChildList).
  getter/setter 만 잘 맞춰주면 문제없는 듯.

3. <c:if test="${info.uploadCompleted}"> 또는 <c:if test="${!info.uploadCompleted}"> 처럼 boolean 형도 사용가능.
  uploadCompleted가 boolean으로, isUploadCompleted/setUploadCompleted의 get/set 메소드가 존재.

'프로그래밍 > Web' 카테고리의 다른 글

[javascript] 전화번호 형식으로 바꾸기  (0) 2010.03.08
[javascript] DOM 스크립트  (0) 2010.01.15
[jsp] jstl 설명  (0) 2010.01.08
[jsp] jstl 설치  (0) 2010.01.08
[servlet] 서블릿에서 jsp로 포워드하기  (0) 2010.01.07