얼마전부터 태그라이브러리로 작업 하고 있습니다.
(아직은 익숙 하지 않아서 좀 버벅이고 있긴 한데.. 나름 소스도 깔금 해지고 장점이 있는거 같습니다.)
진우형 에게 태그라이브러리로 작업 할때 피치 못할 사정으로 인해서 view 즉 화면단에서
특정 라이브러리(흔히드 사용하는 UTIL작업을 도와주는 확장 StringClass 들 등) 를 이용해서 무언가를
해야 될때 어떻게 해야 하나 라고 질문했었는데...
(그때 나온 결론은 VIEW 영역은 말그대로 VIEW 이기에 뿌리는 작업을 하는거지 따로 화면까지
데이터를 끌고와서 스크립트릿으로 작업 하지 말라라고 했습니다.)
아래 방법으로 커스텀 태그를 이용해서 하면 기존의 static 클래스들을 이용해서 작업하면
jstl을 이용한다는 큰틀에서 벗어 나지도 않고 나름 윈윈 할수 있을거 같습니다. ~
(그래도 가능하면 데이터 변경작업들은 비지니스 쪽에서 작업하는게 올바른 방법이겠죵? ..)
============================= 발췌 부분 시작 ======================================
JSP 2.0의 el( ${} )과 jstl(c, fmt, fn)을 쓰다보면 이렇게 편할수 있구나 하고 느꼇는데...
뭔가 부족한게 있어서 fn관련 Soruce를 보게 되었는데..
헉.... fn.tld를 보면
Classs를 보면 일반 Static function을 바로 불러 쓰고 있었습니다.
다음은 fn.tld의 예 인데.. 너무 단순하지요...
taglib를 만든 다기 보다는 taglib에 기존 Class 함수를 정의만 해두면 되니까요.
예제
------------------- [mi-html-util.tld]----------------
New line to br tag
javacross.util.HTMLUtil
java.lang.String nl2br(java.lang.String)
${mhtml:nl2br(String txt)}
---------------- HTMLUtil.java --------------
package javacross.util;
public class HTMLUtil {
static final RE reg_NL = new RE("(\015\012)|(\015)|(\012)");
public static String nl2br(String txt){
if (txt == null) {
return null;
} else {
return reg_NL.subst(txt,"
" );
}
}
public static String null2nbsp(String txt){
if (txt == null) {
return " ";
} else {
return txt;
}
}
}
------------------- test.jsp ----------------------
<%@ page language="java" contentType="text/html; charset=MS949" %>
<%@ taglib prefix="mhtml" uri="/WEB-INF/tld/mi-html-util.tld" %>
테스트 해보기 ${mhtml:nl2br(course.first_remark)}
============================= 발췌 부분 끝 ========================================
원문 정보 : http://blog.naver.com/haruma95/80009565986