JSP 2.0 사용자 정의 탭

--- | SimpleTag 인터페이스
태그 처리 클래스 의 수명 주기 방법 을 정의 합 니 다.doTag()
--- | Simple TagSupport 클래스
모두 Simple Tag 인 터 페 이 스 를 실현 하 는 방법 이 므 로 다음 에 우 리 는 이 종 류 를 계승 하고 다시 쓰 면 된다.
자신의 if 구현... else 태그
목표:
 1    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 2 
 3    <c:choose>
 4 
 5      <c:when test="<%= 12>1 %>">
 6 
 7               
 8 
 9      </c:when>
10 
11      <c:otherwise>
12 
13               
14 
15      </c:otherwise>
16 
17    </c:choose>

분석:
1. ChooseTag. java, 태그 필드 속성 을 정의 해 야 합 니 다.
 1 public class ChooseTag extends SimpleTagSupport {
 2     private boolean tag = true;
 3     public boolean isTag() {
 4         return tag;
 5     }
 6     public void setTag(boolean tag) {
 7         this.tag = tag;
 8     }
 9     //         
10     public void doTag() throws JspException, IOException {
11         //        
12         JspFragment body = this.getJspBody();
13         //      
14         body.invoke(null);
15         super.doTag();
16     }
17 }

2. WhenTag.java
 1 public class WhenTag extends SimpleTagSupport {
 2     private boolean test;
 3     public boolean isTest() {
 4         return test;
 5     }
 6     public void setTest(boolean test) {
 7         this.test = test;
 8     }
 9     //         
10     public void doTag() throws JspException, IOException {
11         //      
12         ChooseTag choose = (ChooseTag)this.getParent();
13         //            
14         boolean parent = choose.isTag();
15         //   
16         if( parent && this.isTest() ){
17             //           
18             choose.setTag(false);
19             //      
20             JspFragment body = this.getJspBody();
21             body.invoke(null);
22         }
23         super.doTag();
24     }
25 }

3. Otherwise.java
 1 public class OtherwiseTag extends SimpleTagSupport {
 2     
 3     //         
 4     public void doTag() throws JspException, IOException {
 5         //      
 6         ChooseTag choose = (ChooseTag)this.getParent();
 7         //            
 8         boolean parent = choose.isTag();
 9         //   
10         if(parent){
11             //      
12             JspFragment body = this.getJspBody();
13             body.invoke(null);
14         }
15         super.doTag();
16     }
17 }

4. 설명 파일
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <taglib 
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
 6     version="2.1">
 7   <!-- 2.           -->  
 8   <tlib-version>1.0</tlib-version>
 9   <short-name>jnb</short-name>
10    <tag>  
11     <name>choose</name>
12     <tag-class>cn.itcast.tags.ChooseTag</tag-class>
13     <body-content>scriptless</body-content>     JSP2.0  
14   </tag>
15   <tag>  
16     <name>when</name>
17     <tag-class>cn.itcast.tags.WhenTag</tag-class>
18     <body-content>scriptless</body-content>
19     <attribute>
20         <name>test</name>
21         <required>true</required>
22         <rtexprvalue>true</rtexprvalue>
23     </attribute>
24   </tag>
25    
26    <tag>  
27     <name>otherwise</name>
28     <tag-class>cn.itcast.tags.OtherwiseTag</tag-class>
29     <body-content>scriptless</body-content>
30   </tag>
31 </taglib>    

 
5. 도입 과 사용
1 <%@taglib uri="/WEB-INF/ifelse.tld" prefix="jnb"%>
2      <jnb:choose>
3         <jnb:when test="<%= 1>2 %>">
4                   
5         </jnb:when>
6         <jnb:otherwise>
7                     
8         </jnb:otherwise>
9      </jnb:choose>

패키지 사용자 정의 탭 라 이브 러 리
  • taglibs 폴 더 만 들 기
  • 모든 태그 처리 클래스 에 대응 하 는 class 파일 을 패키지 와 함께 1 의 디 렉 터 리 에 복사 합 니 다
  • 1 의 폴 더 에 META - INF 폴 더 만 들 기
  • tled 파일 을 META - INF 디 렉 터 리 로 복사
  • tled 파일 을 편집 하여 uri 요 소 를 도입 합 니 다
  •    http://www.jnb.com             ->도입 url 경로 제공
    tled 파일 에 uri 를 미리 쓰 고 *. jsp 에 www. jnb. com 을 도입 하면 오류 가 발생 합 니 다. uri 는 포장 할 때 사용 합 니 다.
          6. jar 명령 으로 포장 하기
       D:\mytaglibs>jar cvf jnb.jar *

    좋은 웹페이지 즐겨찾기