커스텀 태그에 단순한 Attribute를 지정할 때에는 <%@attribute 선언 후 name 과 value , type 값을 주면서 사용했으나,
복잡한 계산이나, html태그나 문장이 들어갈 경우, 가독성이 떨어지거나, 사용하기 어려울 수 있을 때에 사용하는 것이
<%@attribute 의 fragment 속성이다. 기본 값은 false이므로 true 값으로 바꾸어 사용여부를 정한다.
<%@ attribute name="attr" fragment="true" %>
JSP 페이지에서는 커스텀 태그의 자식태그로 <jsp:attribute> 태그를 사용함으로서 커스텀 태그의 속성 값을 정의한다.
name 속성에는 속성명을, <jsp:attribute> 태그의 몸통에는 속성 값을 정의한다.
<%@ taglib prefix="my" tagdir="/WEB-INF/tags/chap16" %>
,,,
<my:tagExtFragment >
<jsp:attribute name="attr">
<p>Hello World</p>
<%-- <%!
int i =0; 스크립트요소 사용불가
%> --%>
</jsp:attribute>
<jsp:attribute name="attr2">
<p>Hello Fragment - jsp:invoke</p>
</jsp:attribute>
</my:tagExtFragment>
Tag 파일에서 속성 값을 받아올때는 <jsp:invoke>를 사용하며, fragment속성의 값으로 속성명을 주어 값을 받아오게된다.
var 나 scope 속성으로 변수에 담거나 담을 영역을 선택하여 필요할때 Tag파일에서 출력할 수 있게 구성되어있다.
<!-- 값을 받아올때는 jsp:invoke를 사용한다. fragment 속성에 attribute 이름을 넣는다. -->
<jsp:invoke fragment="attr" />
<hr />
<!-- var변수와 scope 영역에 저장해둘 수도 있다. -->
<jsp:invoke fragment="attr2" var="myAttr2" scope="page" />
<h1>attribute 저장 후</h1>
${myAttr2}
'JSP & Servlet' 카테고리의 다른 글
Servlet에서의 Session (0) | 2020.07.28 |
---|---|
Properties 파일을 이용한 FrontController 구현 (0) | 2020.07.24 |
커스텀태그의 몸통 내용 처리방식 (0) | 2020.07.20 |
태그파일을 이용한 커스텀태그 구현 (0) | 2020.07.20 |
ContextListener (0) | 2020.07.17 |