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)}이 매개 변수의 유형 은 일치 해 야 합 니 다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!