사용자 정의 태그라이브러리.... 0 5 2,564

by 허용운 taglib 태그라이브러리 JSTL [2009.11.19 16:00:23]


얼마전부터 태그라이브러리로 작업 하고 있습니다.
(아직은 익숙 하지 않아서 좀 버벅이고 있긴 한데.. 나름 소스도 깔금 해지고 장점이 있는거 같습니다.)

진우형 에게 태그라이브러리로 작업 할때 피치 못할 사정으로 인해서 view 즉 화면단에서
특정 라이브러리(흔히드 사용하는 UTIL작업을 도와주는 확장 StringClass 들 등) 를 이용해서 무언가를
해야 될때 어떻게 해야 하나 라고 질문했었는데...
(그때 나온 결론은 VIEW 영역은 말그대로 VIEW 이기에 뿌리는 작업을 하는거지 따로 화면까지
데이터를 끌고와서 스크립트릿으로 작업 하지 말라라고 했습니다.)
아래 방법으로 커스텀 태그를 이용해서 하면 기존의 static 클래스들을 이용해서 작업하면
jstl을 이용한다는 큰틀에서 벗어 나지도 않고 나름 윈윈 할수 있을거 같습니다. ~
(그래도 가능하면 데이터 변경작업들은 비지니스 쪽에서 작업하는게 올바른 방법이겠죵? ..)

============================= 발췌 부분 시작 ======================================
JSP 2.0의 el( ${} )과 jstl(c, fmt, fn)을 쓰다보면 이렇게 편할수 있구나 하고 느꼇는데...
뭔가 부족한게 있어서 fn관련 Soruce를 보게 되었는데..
헉....  fn.tld를 보면 이라는 tag에 class명과 호출 방식으로 선언되어 있고
Classs를 보면 일반 Static function을 바로 불러 쓰고 있었습니다.
다음은 fn.tld의 예 인데.. 너무 단순하지요...
taglib를 만든 다기 보다는 taglib에 기존 Class 함수를 정의만 해두면 되니까요.
 
예제
------------------- [mi-html-util.tld]----------------
 
 
   New line to br tag
 

  nl2br
 
   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
               

by 허용운 [2009.11.19 16:01:17]
쏘리 급하게 쓰느라 오타가 있습니다.
스태틱 클래스가 아니라 스태틱 메서드 입니다~

by 김정식 [2009.11.19 16:29:51]
TagSupport나 BodyTagSupport를 상속하지 않나..
커스텀 태그는 위 둘중 하나를 상속 받아서 구현해야 하는데..
소스 직접 열어서 봐봐
내가 보기엔 HTMLUtil.java 소스가 일부분 빠져 있는거 같은데..
커스텀 태그는 다 좋은데 Test Case 만들기가 조금 불편해..

by 김정식 [2009.11.19 16:31:51]
직접 한 번 테스트 해보고 결과를 올려죠..

by 허용운 [2009.11.19 18:10:14]
가능함메~
샘플코드는 주말에 :D

by 꼬비 [2014.09.25 15:05:49]

좋은 정보 감사합니다~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입