JSP 커스텀 태그 (JSP Custom Tag) 예제
JSP단에서 자주 쓰는 함수들(EL로는 불편한)을 따로 정의하여 사용할 수가 있다.
전자정부표준프레임워크3.9를 기준으로 간단하게 하나의 예제를 만들어보고자 한다.
1. Custom Tag 로 사용할 클래스를 하나 만들어준다.
여기서는 EgovStringUtil 클래스를 사용하기로 한다.(이미 전자정부표준프레임워크내에 만들어져 있는 클래스이다.)
패키지명은 egovframework.com.utl.fcc.service 이다.
2. tld 파일을 추가한다.
여기서는 /src/main/webapp/WEB-INF/tlds 에 tld파일을 추가한다. 이미 해당폴더는 egovc.tld 파일이 있다.
파일의 내용은 아래와 같다. (여기서는 util.tld 라는 파일명으로 추가하였다.)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>Util library</description>
<display-name>Util</display-name>
<tlib-version>1.0</tlib-version>
<short-name>CmnUtil</short-name>
<uri>/WEB-INF/tld/util.tld</uri>
<function>
<description>문자열이 지정한 길이를 초과했을때 지정한길이에다가 해당 문자열을 붙여주는 메서드</description>
<name>cutString</name>
<function-class>egovframework.com.utl.fcc.service.EgovStringUtil</function-class>
<function-signature>java.lang.String cutString(java.lang.String, java.lang.String, int)</function-signature>
<example>
${CmnUtil:cutString(java.lang.String source, java.lang.String output, int slength)}
</example>
</function>
</taglib>
|
cs |
간단히 기술해보면(부정확할 가능성도 있는 설명이다. 대략 짐작으로 적어넣었다.)
<description>Util library</description>
- 적당히 기술한다. util.tld에 대한 description 으로 생각했다.
<display-name>Util</display-name>
- 적당히 기술한다. util.tld 에 대한 display-name 정도로 생각하였다.
<tlib-version>1.0</tlib-version>
- 적당히 기술한다. util.tld에 대한 관리버전정도로 생각하였다.
<short-name>CmnUtil</short-name>
- 적당히 기술한다. 기억하기 좋은 것이면 좋겠다 싶었다.
<uri>/WEB-INF/tld/util.tld</uri>
- util.tld의 위치정도로 생각하였다.
<function></function> 사이를 살펴보자.
<description></description>
- 메소드에 대한 설명쯤으로 생각하였다.
<name></name>
- 메소드명으로 생각하였다.
<function-class>egovframework.com.utl.fcc.service.EgovStringUtil</function-class>
- 클래스명(패키지명을 포함한)으로 생각하였다.
<function-signature>java.lang.String cutString(java.lang.String, java.lang.String, int)</function-signature>
- 함수명 + @로 생각하였다.
- 여기서 String 만 쓰면 안되고 java.lang.String 을 써야만 하였다.
- int 는 그냥 int 만 사용이 가능하였다.
<example></example>
- 함수의 사용법 정도로 생각하였다.
3. JSP 파일을 수정한다.
1
|
<%@ taglib uri="/WEB-INF/tlds/util.tld" prefix="CmnUtil"%>
|
cs |
상단에 위와 같이 추가해준다.
4. 원하는 곳에 아래와 같이 적용한다.
1
|
<c:out value="${CmnUtil:cutString(result.subject, '....', 40)}"/>
|
cs |
3번의 prefix 값과 4번의 CmnUtil 은 뭘로 쓰던 동일해야 한다.
이상없이 잘 나오므로 Done.