| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
n672
9年前发布

JSP 2.x 自定义标签

JSP 1.x的标签,虽然使用起来非常灵活,但是比较复杂,JSP 2.x提供了一组简化的标签写法


SimpleTagSupport是SimpleTag接口的子类,同时支持参数和标签体,最核心的方法时doTage

public AddTag extends SimpleTagSupport{        private int num1;        private int num2;           public void doTag() throws JspException,IOException{               this.getJspContext.getOut().write("两数相加等于:"+(num1+num2));        }        //省略setter、getter方法  }
 


同样是实现了计算两数之和的功能,配置与JSP1.x 一样

JSP 1.x的标签体是通过setBodyContent注入到BodyTag,通过getBodyContent取出来的。而SimpleTag是通过一种叫jspFragment的对象实例实现的

//此标签用于将字符转换成大写  public void doTag() throws JspException,IOException{                             StringWriter writer = newStringWriter();               JspFragment jspFragment = this.getJspBody();     //通过invoke输出到指定的writer中,如果参数为空,则输出到默认的writer, //即getJspContext().getOut()                  jspFragment.invoke(writer);               String content =writer.getBuffer().toString();               this.getJspContext().getOut().print(content.toUpperCase());        }

 


配置如下


<tag>        <name>tagname</name>        <tagclass>com.chen.tags.TagTest</tagclass>        <bodycontent>tagdependent</bodycontent >        <info>tag information</info>  </tag>


这里的<bodycontent>只能是tagdependent,而不能是JSP或者bodycontent

与JSP 1.x不同的是,JSP 2.x标签可以有多个标签体,并且可以按照不同顺序,不同的次数分别调用标签体,多个标签体需要借助JSP的<jsp:attribute>,而且在tld配置的时候,必须配合为fragment类型


<attribute>               <name>body1</name>               <required>false</ required>               <fragment>true</fragment >  </attribute>


 本文由用户 n672 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1423317244514.html
JSP Java开发