반응형
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 |