프로그래밍/JSP Servlet

JSP/Servlet – 동적 애트리뷰트를 지원하는 태그 파일 만들기

가카리 2016. 2. 18. 21:50
반응형

 

JSP/Servlet – 동적 애트리뷰트를 지원하는 태그 파일 만들기

 


2016/02/18 - [프로그래밍/JSP/Servlet] - JSP/Servlet – 애트리뷰트를 지원하는 태그 파일 만들기


2016/02/14 - [프로그래밍/JSP/Servlet] - JSP/Servlet – 태그 파일을 이용해서 커스텀 액션 만드는 방법



이전 예제에서는 attribute지시자를 이용해서 모든 애트리뷰트를 정의했습니다.

 

이번에는 커스텀 액션을 dynamic-attributes 지시자를 이용해서 만들어봅시다. 이 지시자를 사용하며 다음과 같이 애트리뷰트 값을 가져올 수 있습니다.

 

    <%@tag dynamic-attributes="동적 애트리뷰트 이름"%>

    

    ${동적 애트리뷰트 이름.사용 애트리뷰트 이름}

 

동적 애트리뷰트는 먼저 태그 파일에서 page 영역의 데이터를 가져와야 합니다. 이때는 Map 객체를 사용합니다.

 

    Map attrs = (Map) jspContext.getAttribute("attrs");

 

동적 애트리뷰트의 경우 모든 애트리뷰트 값이 문자열로 저장되서 리턴 값을 String 타입으로 변환해야 합니다.

 

    Stirng str = (Stirng)attrs.get("size");

 

만약 Int타입으로 사용하고 싶다면 다음과 같이 파싱을 해야합니다.

 

    int size = Integer.parseInt(str);

 

위와 같이 /WEB-INF/tags 폴더 안에 태그 파일을 넣습니다.

 

allnewLine.tag

 

<%@tag body-content="empty"%>

<%@tag dynamic-attributes="attrs" %>

<FONT color=${attrs.color }>

<%

    java.util.Map attrs = (java.util.Map)jspContext.getAttribute("attrs");

    String str = (String)attrs.get("size");

    int size = Integer.parseInt(str);

    for(int cnt = 0; cnt < size; cnt++){

        out.print("-");

    }

%>    

</FONT>

 

 

TagTest.jsp

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"

pageEncoding="EUC-KR"%>

<%@taglib prefix="util" tagdir="/WEB-INF/tags" %>

<!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=EUC-KR">

<title>Insert title here</title>

</head>

<body>

    <util:allnewLine color="blue" size="25"/> <BR>

    TagTest <BR>

    <util:allnewLine color="red" size="20"/>

</body>

</html>

 

실행화면

다음과 같이 동적 애트리뷰트를 사용해도 결과는 잘나옴을 알 수 있습니다.

반응형