개발/JSP
Custom tag 라이브러리 만들기
신매력
2013. 4. 9. 10:45
옛날엔 태그라이브러리를 사용하기 귀찮고 복잡?했다고 한다
지금은 간단히 쓸 수 있도록 JSTL이 업데이트 됐다.
사용법 두 가지를 설명하겠다.
1. 템플릿(jsp)
user 객체의 id값으로 name을 받아오는 예제이다.
... taglib들 생략 <% taglib prefix="custom" tagdir="/WEB-INF/tags" %>
태그로 출력한 <custom:test returnColumn="name" id="${user.id}" /><br/>
<custom:user returnColumn="name" id="${user.id}" var="value" />
EL태그로 출력한 ${value.name} |
결과 >>
태그로 출력한 사자고양이 EL태그로 출력한 사자고양이 |
${value.name} 이렇게 쓸 수 있는 것은, tag 파일에서 attribute에 set을 해주기 때문이다
custom : prefix
user : 태그 파일 이름 (여기서는 /WEB-INF/tags/user.tag 이다)
returnColumn, id, var : 속성이다. 속성의 이름은 tag 파일에서 지정한다.
2. tag 파일(test.tag)
로직은 대충 되어있으니 사용법만 볼 것.
<%@ tag body-content="empty" pageEncoding="UTF-8"%> <%@ tag import="org.springframework.web.context.WebApplicationContext, org.springframework.web.servlet.support.RequestContextUtils, com.test.service.TestService" %>
<%@ attribute name="returnColumn" required="true" %> <%@ attribute name="id" required="false" %> <%@attribute name="var" required="false" %> <% // bean을 가져온다 WebApplicationContext ctx = RequestContextUtils.getWebApplicationContext(request, request.getServletContext()); UserService userService = (UserService) ctx.getBean("userService"); Object returnValue = null;
if (returnColumn.equals("name")) { returnValue = userService.getId("name"); // 처리 }
if (null != var) { // 두번째 방법 - attribute에 set 한다 ctx.getServletContext().setAttribute(var, returnValue); } else { // 첫번째 방법 - 출력해버린다 out.print(returnValue); } %> |