JSp 사용자 정의 탭 과 방법 상세 설명

4509 단어 Jsp라벨
JSp 사용자 정의 탭 과 방법 상세 설명
먼저 태그 처리 클래스 가 있어 야 합 니 다.태그 처리 클래스 는 태그 인 터 페 이 스 를 직접 실현 할 수 있 고 자바 에서 이미 실 현 된 태그 Support 클래스 를 계승 할 수 있 습 니 다.태그 Support 도 태그 인 터 페 이 스 를 계승 하 는 것 입 니 다.그 내부 에서 태그 인 터 페 이 스 를 실 현 했 습 니 다.일반적으로 태그 Support 클래스 를 계승 하고 그 다음 에 부모 클래스 의 doStartTag 와 doEndTag 방법 을 다시 씁 니 다.
시작 탭 에 반환 값 은 주로 EVALBODY_INCLUDE 와 SKIPBODY,전 자 는 실행 탭 체 를 표시 하고 후 자 는 탭 체 를 생략 합 니 다.
끝 탭 에 대한 반환 값 은 주로 두 가지 EVAL 입 니 다.PAGE 와 SKIPPAGE,전 자 는 종료 탭 이후 의 내용 을 계속 실행 하 겠 다 고 밝 혔 고 후 자 는 종료 탭 이후 의 내용 을 무시 하 겠 다 고 밝 혔 다.또한,TagSupport 류 를 계승 하 는 태그 처리 류 에는 두 개의 함 축 된 속성 이 있 습 니 다.하 나 는 parent 입 니 다.이 태그 의 상단 라벨 을 나타 내 는 처리 류 이 고,다른 하 나 는 pageContext 입 니 다.pageContext 는 우리 가 사용 하 는 WEB 요 소 를 편리 하 게 하기 위해 도입 한 속성 입 니 다.예 를 들 어 HttpSession 과 같은 것 입 니 다.Tag 인 터 페 이 스 를 실현 한 클래스 도 이 두 가지 은밀 한 속성 을 사용 할 수 있 으 며,그 중의 setParent()방법 과 setPageContext()방법 만 실현 하면 된다.
다음은 태그 처리 클래스 의 코드 스타일 입 니 다.

public class MyTag extends TagSupport { 
 
private String prop1; 
private String prop2; 
 
  /** 
   * 
   */ 
  private static final long serialVersionUID = -8771409930058657336L; 
   
  @Override 
  //               EVAL_PAGE SKIP_PAGE,                 ,               ; 
  public int doEndTag() throws JspException { 
    // TODO Auto-generated method stub 
//            ,       ,     ,  super.doEndTag()    EVAL_PAGE 
//   return EVAL_PAGE; 
//   return SKIP_PAGE; 
    return super.doEndTag(); 
  } 
 
  @Override 
  /** 
   *               EVAL_BODY_INCLUDE SKIP_BODY,         ,          
   */ 
  public int doStartTag() { 
    // TODO Auto-generated method stub 
//              ,             
//          ,parent pageContext 
    if (yourCondition) 
      return EVAL_BODY_INCLUDE; 
    else 
      return SKIP_BODY; 
  } 
//  get set   
} 
 
 
다음은 WEB-INF 아래 에 새.tld 파일 을 만 듭 니 다.이름 은 마음대로 가 져 옵 니 다.이 tld 파일 은 태그 라 이브 러 리 에 대한 설명 입 니 다.이 태그 라 이브 러 리 에는 어떤 태그 와 방법,그리고 태그 속성 등에 대한 설명 이 포함 되 어 있 습 니 다.이 파일 이 있 으 면 WEB 서버 가 시 작 될 때 시스템 에서 이 파일 을 불 러 옵 니 다.그리고 페이지 에 이 태그 라 이브 러 리 를 사용 할 때 시스템 은 WEB-INF 디 렉 터 리 에 불 러 온 tled 파일 에서 해당 하 는 태그 라 이브 러 리 를 찾 습 니 다.없 으 면 오류 가 발생 합 니 다!
다음은 td 파일 의 스타일 입 니 다:

<?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/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
 version="2.0"> 
   
 <tlib-version>1.0</tlib-version><!--     --> 
 <short-name>my</short-name><!--       --> 
 <uri>http://www.test.com/core</uri><!--   uri             uri --> 
  
 <function><!--         ,          ,                   ,               --> 
  <name>funcTest</name><!--     --> 
  <function-class>com.test.util.Util</function-class><!--        --> 
  <!--        ,boolean      , funcName     ,       ,                  , java.lang.String--> 
  <function-signature>boolean funcName(int,int,int)</function-signature> 
 </function> 
  
 <tag> 
  <name>tagName</name><!--     ,                  --> 
  <tag-class>com.test.web.tag.MyTag</tag-class><!--     --> 
  <attribute> 
    <name>prop1</name><!--            --> 
    <required>true</required><!--       --> 
  </attribute> 
  <attribute> 
    <name>prop2</name> 
    <required>true</required> 
  </attribute> 
 </tag> 
</taglib> 
 
이후 페이지 에 이 탭 라 이브 러 리 를 직접 도입 하여 사용자 정의 탭 을 사용 할 수 있 습 니 다.
예:

<%@taglib prefix="my" uri="http://www.test.com/core" %> 
//  <my:myTag prop1="" prop2="">content</my:myTag> 
자체 적 인 방법 에 대한 사용 은 jstl 을 이용 하여 사용 해 야 합 니 다.
jstl 탭 을 가 져 온 후 이렇게 사용 할 수 있 습 니 다:
${my:funName(arg 0,arg 1,arg 2)}이 매개 변수의 유형 은 일치 해 야 합 니 다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기