1) 태그 파일을 작성해서 만드는 방법
확장자 .tag
<%@ taglib prefix=".." tagdir="경로" %>
2) 태그 클래스를 작성해서 만드는 방법
-page 지시자와 유사, 태그의 정보 정의
-pageEncoding: 태그 인코딩 설정
-import: 자바 패키지 추가
-trimDirectiveWhitespaces: true - 태그 앞 뒤 공백을 제거 출력
<%@ include file="파일 경로" %>
:태그 파일 내에서도 다른 태그 라이브러리 기능 사용 가능
<%@ attribute name="속성명" %>
사용자 입력 값에 따라 tag 지역변수 생성 후 변경
속성명으로 지역 변수 생성
속성명으로 EL식 속성 추가
type: 자료형(기본값 - java.lang.String)
기본 자료형은 그냥 그래도 사용 X, 래퍼 클래스 형태로만 설정
(int -> java.lang.Integer)
//태그에서
<%@ tag body-content="empty" pageEncoding="UTF-8" trimDirectiveWhitespaces="true" %>
<%@ attribute name="color" %>
<%@ attribute name="size" type="java.lang.Integer" %>
<%--<%=color%>--%>
<%--${color}--%>
<div style="color: ${color};">
<%
for (int i = 0; i < size; i++) {
out.write("-");
}
%>
</div>
//jsp에서
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="util" tagdir="/WEB-INF/tags/utils" %>
<util:line color="blue" size="30"/>
<util:line color="orange" size="100"/>
커스텀 액션의 본체를 처리하는 태그 파일
-body-content : scriptless | tagdependent
-<jsp:doBody /> : 태그 안쪽 내용물 출력
변수를 지원하는 커스텀 액션
@variable: 변수
예) <c:set var="변수명" value="..." />
1) name-given : 속성명 - EL식 변수
2) variable-class : EL식 변수의 자료형, 문자(java.lang.String - 기본값)
3) scope
- NESTED : 여는태그, 닫는태그 형식, 태그 내부에서 EL식 변수를 접근
- AT_BEGIN : 여는 태그 바로 아래쪽에서 접근
- AT_END : 주로 단일 태그에서 많이 사용하고, 닫는 태그 아래 쪽에서 접근 가능
//jsp에서
<%@ tag body-content="empty" %>
<%@ tag pageEncoding="UTF-8" trimDirectiveWhitespaces="true" %>
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
<%@ attribute name="num1" type="java.lang.Integer" required="true" %>
<%@ attribute name="num2" type="java.lang.Integer" required="true" %>
<%@ attribute name="var" required="true" rtexprvalue="false" %>
<%@ variable name-from-attribute="var" alias="minimum" variable-class="java.lang.Integer" scope="AT_END" %>
<%
int min = num1 > num2 ? num2 : num1;
%>
<c:set var="minimum" value="<%=min%>" />
//예제에서
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
<%@ taglib prefix="util" tagdir="/WEB-INF/tags/utils" %>
<util:min var="min" num1="100" num2="200" />
${min}
<c:forEach var="item" items={item}
</c:forEach>