1. 몸체 내용 처리

 

① EL과 태그를 처리한 몸체 내용 사용하기

- tag 디렉티브의 body-content 속성값을 scriptless로 지정

- <jsp:doBody> 액션 태그를 이용하여 몸체 내용을 출력하거나 EL 변수로 저장

<%@ tag body-content="scriptless" %>
<!-- 몸체로 전달 받은 내용을 사용 -->
<jsp:doBody />

 

<예시>

- 태그 파일 (HTML 태그를 제거해주는 기능)

<%@ tag body-content="scriptless" pageEncoding="UTF-8"%>
<%@ attribute name="length" type="java.lang.Integer" %>
<%@ attribute name="trail" %>
<%@ attribute name="trim" %>

<%-- 몸체로 전달받은 내용을 var 속성으로 지정한  EL 변수에 저장 --%>
<jsp:doBody var="content" scope="page" />

<%
	//jspContext 기본 객체의 content 속성 값을 읽어옴
	String content = (String) jspContext.getAttribute("content");
	if(trim != null && trim.equals("true")) {
		content = content.trim();
	}
	//정규 표현식을 사용해서  content에서 태그를 삭제
	content = content.replaceAll(
			"<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "");
	if(length != null && length.intValue() > 0 &&
			content.length() > length.intValue()) {
		content = content.substring(0, length.intValue());
		
		if(trail != null) {
			content = content + trail;
		}
	}
%>
<%= content %>

- 태그 파일을 사용하는 JSP 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.util.Date" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="tf" tagdir="/WEB-INF/tags" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>removeHtml</title>
</head>
<body>
<c:set var="dateEL" value="<%= new Date() %>" />
<tf:removeHtml trim="true">
	<font size="10">현재 <style>시간</style>은 ${dateEL} 입니다.</font>
</tf:removeHtml>
<br>
<%-- 문자열이 length 설정값인 15 길이 까지만 출력되고 그 다음부터는 trail 속성값으로 나옴 --%>
<tf:removeHtml length="15" trail="..." trim="true">
	<u>현재 시간</u>은 <b>${dateEL}</b> 입니다.
</tf:removeHtml>
<br>
<%-- 문자열이 length 설정값인 15 길이 까지만 출력됨 --%>
<tf:removeHtml length="15">
	<jsp:body><u>현재 시간</u>은 <b>${dateEL}</b> 입니다. </jsp:body>
</tf:removeHtml>
</body>
</html>

 

② 몸체 내용 자체를 데이터로 사용하기

: tag 디렉티브의 body-content 속성의 값을 tagdependent로 지정

 

③ 몸체 내용을 반복적으로 사용하기

: <jsp:doBody> 액션 태그를 반복적으로 실행

 

<예시>

- 태그 파일

<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ tag trimDirectiveWhitespaces="true" %>
<%@ attribute name="count" required="true" type="java.lang.Integer" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:forEach begin="${1}" end="${count}">
<jsp:doBody /> <%-- 몸체로 전달 받은 내용을 그대로 출력 --%>
</c:forEach>

- 태그 파일을 사용하는 JSP 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="tf" tagdir="/WEB-INF/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>multiple 태그 사용</title>
</head>
<body>
 
<c:set var="num" value="${1}" /> 	<%-- num 변수를 만들어 1 저장 --%>
<tf:multiple count="10">			<%-- multiple 함수를 10 까지 사용 --%>
${num} <br>
<c:set var="num" value="${num+1}" />	<%-- num 변수에  num+1 하여 출력--%>
</tf:multiple>

</body>
</html>

'JSP/Servlet > 12. 커스텀 태그 만들기' 카테고리의 다른 글

Day 59 : 변수 생성  (0) 2022.01.07
Day 58 : 커스텀 태그  (0) 2022.01.06

+ Recent posts