본문 바로가기
Java/Java

[JSTL] custom taglib에서 가변인자 사용하는 함수 만들기

by 오늘의개발부 2019. 11. 27.
반응형

0.custom taglib 만들기

1.taglib으로 사용할 CommonUtil 클래스에 가변인자를 사용하는 함수를 만들어보자

#간단하게 구분자와 문자열 여러 개를 받아 연결해서 돌려주는 함수를 작성해보자
pubilc static String getList(String delimiter, String... strs){
    #taglib에서 사용할 모든 함수는 static으로 선언한다
    #가변 인자 외에 다른 인자를 받는다면 가변인자는 맨 뒤에서 받아줘야한다

    StringJoiner sj = new StringJoiner(delimiter, "[", "]");

    for(String str : strs){
        sj.add(str)
    }
    return js.toString();
}

2.CommonUtil.tld에 함수 선언

<function>
    <description>sample function</description>
    <name>getList</name>
    <function-class>com.12team.util.CommonUtil</function-class>
    <function-signature>java.lang.String getList(java.lang.String, java.lang.String[]) # 가변인자는 뭘까? 결국 배열이다
    </function-signature>
    <example> ${cutil:getList(delimiter, str1, str2...)} 
    </example>
</function>

3.사용

    ${cutil:getList('-', '하나', '둘', '셋')}            # [하나-둘-셋]
    ${cutil:getList('-', '하나', '둘')}                 # [하나-둘]

4.아주 간단하다

custom taglib에서 가변인자를 사용하는 함수를 선언하려다가 이게 되나? 하는 생각이 들었다. 구글링 해보니 custom taglib, 가변인자에 대한 내용을 잘 찾을 수 없었다. 당연히 될 거라서 그런가...? 되나 안 되나 한 번 해보자는 생각으로 함수를 작성하고 tld에 선언하려는데 어떻게 해줄까 고민하다가 어차피 가변인자도 배열이니 배열로 선언했다. 그리고 결과도 잘 나왔다. 역시 될까 말까 한 건 다 구현이 되어있다.
위의 예제와 같은 정도는 굳이 tablib으로 선언해서 쓸 필요는 없겠지만 혹시라도 taglib에서 가변인자를 다루는 함수가 필요한 사람이 나처럼 되나? 하고 구글링 해보게 된다면 가능하다는 사실만 알더라도 좋을 것이다.

반응형

'Java > Java' 카테고리의 다른 글

Mybatis-config.xml에서 yaml의 값 읽어오기  (0) 2021.01.05
[JSTL] 배열, 리스트 등의 길이 확인하기  (0) 2019.11.27