JSTL自定义标签库高级点儿

1、SimpleTagSupport实现了SimpleTag接口

已经把所有的Tomcat传递的数据都保存起来,还提供get方法供子类调用----》》》
public class MyTag2 extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
this.getJspContext().getOut().print(“再说一次WAN”);}}
页面:

2、有标签体的标签
标签体内容的可选值
元素的可选值有:
empty:无标签体
scriptless:标签体内容不能是java脚本,但可以是EL、JSTL等。在simpletag中,如果需要有标签体,那么就使用该选项

JSP:传统标签支持它,SimpleTag已经不再支持
JSP。标签体内容可以是任何东西:EL、JSTL、<%=%>、以及html。
tagdependent:标签体内容不做运算,由标签处理类自行处理,无论标签体内容是EL、JSP、JSTL,都不会做运算。

自定义有标签体的标签需要:

获取标签体对象:JspFragment、JspBody = getJspBody();
把标签体内容输出到页面:JspBody.invoke(null);
tld中指定标签内容类型:scriptless。
----》》》
public class MyTag3 extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
Writer out = this.getJspContext().getOut();//获取当前jsp页面的输出流
out.write("***************
");
this.getJspBody().invoke(out);//执行标签体内容,把结果写到指定的流中,即页面上
out.write("
***************");}}
页面:
<%
request.setAttribute(“xxx”, “wxhnhhl”);
%>

${xxx }

3、不执行标签下面的页面内容
—》如果希望在执行了自定义标签后,不再执行JSP页面下面的东西,那么就需要在doTag()方法中使用SkipPageException
类:
public class MyTag4 extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
this.getJspContext().getOut().print(“下面什么都没有!”);
throw new SkipPageException();//抛出这个异常后,再本标签后面的内容将看不到
}
}
页面:

4、有属性的标签
1、在标签处理类添加属性
为标签处理类添加属性,属性至少要有一个set方法,这个set方法会在doTag()方法之前被Tomcat执行,所在doTag()中就可以使用属性
2、在tld文件中对属性进行配置

指定属性名
制定属性是否为必需的
指定属性是否可以使用EL

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值