개인적인 정리

JSP 커스텀 태그 (JSP Custom Tag) 예제 본문

전자정부표준프레임워크

JSP 커스텀 태그 (JSP Custom Tag) 예제

yeon.Biju 2020. 9. 14. 14:46

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.

 

 

 

Comments