开发实例:
if标签:
助手类:
public class IfTag extends BodyTagSupport{
private boolean test;
public boolean isTest ( ) {
return test;
}
public void setTest ( boolean test) {
this. test = test;
}
@Override
public int doStartTag ( ) {
if ( this. test) {
return EVAL_BODY_INCLUDE;
}
return SKIP_BODY;
}
}
描述文件(tld)
< ! -- if -- >
< tag>
< ! -- 标签名 -- >
< name> if < / name>
< ! -- 标签助手类:全限地名 -- >
< tag- class > com. zking. jsp. IfTag< / tag- class >
< ! -- 标签的内容类型:empty:空标签,jsp: 可以为任何合法的jsp元素 -- >
< body- content> jsp< / body- content>
< attribute>
< ! -- 属性名:outTag类中的val属性相匹配 -- >
< name> test< / name>
< ! -- 表示该属性为必要的属性 -- >
< required> true < / required>
< ! -- 该属性可以接受的EL表达式的值 -- >
< rtexprvalue> true < / rtexprvalue>
< ! -- 标签描述:用于说明标签的作用 -- >
< description> out属性标签,val属性< / description>
< / attribute>
< / tag>
引入标签
< z: if test= "${100 == 100}" >
测试if ( 100 == 100 )
< / z: if >
< z: if test= "${100 != 200}" >
测试if ( 100 != 200 )
< / z: if >
foreach标签:
助手类:
package com. zking. jsp;
import java. util. Iterator;
import java. util. List;
import java. util. Objects;
import javax. servlet. jsp. JspException;
import javax. servlet. jsp. tagext. BodyTagSupport;
public class ForeachTag extends BodyTagSupport {
private List< ? > items;
private String var;
public List< ? > getItems ( ) {
return items;
}
public void setItems ( List< ? > items) {
this. items = items;
}
public String getVar ( ) {
return var;
}
public void setVar ( String var) {
this. var = var;
}
@Override
public int doStartTag ( ) throws JspException {
if ( Objects. isNull ( this. items) || this. items. size ( ) == 0 ) {
return SKIP_BODY;
}
Iterator< ? > it = this. items. iterator ( ) ;
Object obj = it. next ( ) ;
this. pageContext. setAttribute ( var, obj) ;
this. pageContext. setAttribute ( "it" , it) ;
return EVAL_BODY_INCLUDE;
}
@Override
public int doAfterBody ( ) throws JspException {
Iterator< ? > it = ( Iterator< ? > ) this. pageContext. getAttribute ( "it" ) ;
if ( it. hasNext ( ) ) {
this. pageContext. setAttribute ( var, it. next ( ) ) ;
return EVAL_BODY_AGAIN;
}
return SKIP_BODY;
}
}
描述文件(tld)
< ! -- Foreach -- >
< tag>
< ! -- 标签名 -- >
< name> foreach< / name>
< ! -- 标签助手类:全限地名 -- >
< tag- class> com. zking. jsp. ForeachTag< / tag- class>
< ! -- 标签的内容类型:empty:空标签,jsp: 可以为任何合法的jsp元素 -- >
< body- content> jsp< / body- content>
< attribute>
< ! -- 属性名:outTag类中的val属性相匹配 -- >
< name> items< / name>
< ! -- 表示该属性为必要的属性 -- >
< required> true< / required>
< ! -- 该属性可以接受的EL表达式的值 -- >
< rtexprvalue> true< / rtexprvalue>
< ! -- 标签描述:用于说明标签的作用 -- >
< description> out属性标签,val属性< / description>
< / attribute>
< attribute>
< ! -- 属性名:outTag类中的val属性相匹配 -- >
< name> var< / name>
< ! -- 表示该属性为必要的属性 -- >
< required> true< / required>
< ! -- 该属性可以接受的EL表达式的值 -- >
< rtexprvalue> true< / rtexprvalue>
< ! -- 标签描述:用于说明标签的作用 -- >
< description> out属性标签,val属性< / description>
< / attribute>
< / tag>
引入标签
< z: foreach items= "${books}" var= "books" >
< p> ${ books. id} - ${ books. name} < / p>
< / z: foreach>