在实际开发中,往往需要多个标签的嵌套以完成一个任务,这样标签就存在父子关系。类似于下面:
自定义标签之 多个标签的嵌套<mt:switch value="test">
自定义标签之 多个标签的嵌套    
<mt:case value="test1">
自定义标签之 多个标签的嵌套            my    value is test1
自定义标签之 多个标签的嵌套    
</mt:case>
自定义标签之 多个标签的嵌套    
<mt:case value="test2">
自定义标签之 多个标签的嵌套            my value is  test2
自定义标签之 多个标签的嵌套    
</mt:case>
自定义标签之 多个标签的嵌套
</mt:switch>
在上面的标签中,<mt:switch>为父标签,<mt:case>为子标签,一个父标签可以嵌套多个子标签和HTML,Scriptlets等。
下面就来写一个这样的标签
ifTag.java
自定义标签之 多个标签的嵌套package eflylab;
自定义标签之 多个标签的嵌套
import javax.servlet.jsp.*;
自定义标签之 多个标签的嵌套
import javax.servlet.jsp.tagext.*;
自定义标签之 多个标签的嵌套
import java.util.Hashtable;
自定义标签之 多个标签的嵌套
import java.io.Writer;
自定义标签之 多个标签的嵌套
import java.io.IOException;
自定义标签之 多个标签的嵌套
}

Value为IfTag的属性。当为真时,那么就计算IfTagBody;如果为假,就忽略

因为IfTag标签中要嵌套了一个子标签,这个子标签用于输出一些信息到客户端。
下面的是IfTag中嵌套的子标签。
OutTag.java

自定义标签之 多个标签的嵌套package eflylab;
自定义标签之 多个标签的嵌套
import javax.servlet.jsp.*;
自定义标签之 多个标签的嵌套
import javax.servlet.jsp.tagext.*;
自定义标签之 多个标签的嵌套
import java.util.Hashtable;
自定义标签之 多个标签的嵌套
import java.io.Writer;
自定义标签之 多个标签的嵌套
import java.io.IOException;
自定义标签之 多个标签的嵌套
自定义标签之 多个标签的嵌套
public class OutTag extends TagSupport
}
OutTag就是一个简单的不带Body的标签,它主要向客户端输出一些信息。
下面是在标签描述文件中的声明,加入以下内容
自定义标签之 多个标签的嵌套     <tag>    
自定义标签之 多个标签的嵌套        
<name>if</name>
自定义标签之 多个标签的嵌套    
<tag-class>eflylab.IfTag</tag-class>
自定义标签之 多个标签的嵌套    
<body-content>jsp</body-content>
自定义标签之 多个标签的嵌套        
<attribute>
自定义标签之 多个标签的嵌套          
<name>value</name>
自定义标签之 多个标签的嵌套          
<required>true</required>
自定义标签之 多个标签的嵌套          
<rtexprvalue>true</rtexprvalue>
自定义标签之 多个标签的嵌套      
</attribute>
自定义标签之 多个标签的嵌套    
</tag>
自定义标签之 多个标签的嵌套   
<tag>    
自定义标签之 多个标签的嵌套        
<name>out</name>
自定义标签之 多个标签的嵌套    
<tag-class>eflylab.OutTag</tag-class>
自定义标签之 多个标签的嵌套    
<body-content>jsp</body-content>
自定义标签之 多个标签的嵌套        
<attribute>
自定义标签之 多个标签的嵌套          
<name>value</name>
自定义标签之 多个标签的嵌套          
<required>true</required>
自定义标签之 多个标签的嵌套          
<rtexprvalue>true</rtexprvalue>
自定义标签之 多个标签的嵌套      
</attribute>
自定义标签之 多个标签的嵌套     
</tag> 
测试代码:
>
运行:
自定义标签之 多个标签的嵌套

相关文章: