JSP自定义标签

标签描述文件

引用:

<%@ taglib prefix="my" uri="/WEB-INF/tld/my.tld" %>

示例:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
    <tlib-version>1.0</tlib-version><!-- 代表标签库的版本号 -->
    <jsp-version>2.0</jsp-version><!-- 代表jsp的版本 -->
    <short-name>my</short-name><!-- 你的标签库的简称 -->
    <uri>http://my.com</uri><!-- 你标签库的引用uri -->

    <tag>
        <name>simple</name><!-- 你定义的标签的名称 -->
        <tag-class>com.fyp.test.demo.web.tag.MySimpleTag</tag-class><!-- 对应的标签处理程序:包名+类名 -->
        <body-content>empty</body-content><!-- 标签体内容的格式 -->
        <attribute>
            <name>param</name>
            <required>true</required>
            <type>java.lang.String</type>
        </attribute>
    </tag>
</taglib>

body-content说明:

tagdependent:指定标签处理类自己负责处理标签体。
empty:指定该标签只能作用空标签使用。
scriptless:指定该标签的标签体可以是静态 HTML 元素,表达式语言,但不允许出现 JSP 脚本(这种是最常用的,不能出现的是jsp脚本,但是EL表达式和其他标签是可以用的)。
JSP:指定该标签的标签体可以使用 JSP 脚本。

attribute标签的rtexprvalue属性要注意下,这个属性置为true,参数才能接收EL表达式。

自定义标签开发

依赖:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
</dependency>

java简单例子:

public class MySimpleTag extends SimpleTagSupport {

    private String param;

    public void doTag() throws JspException, IOException {
        JspWriter out = getJspContext().getOut();
        out.println("Hello world! The param=" + param);
    }

    public String getParam() {
        return param;
    }

    public void setParam(String param) {
        this.param = param;
    }

}

jsp简单例子:

<%@ taglib prefix="my" uri="/WEB-INF/tld/my.tld" %>

...

<my:simple param="123"/>

如果要带标签体,需要在描述文件里指定:

<body-content>scriptless</body-content>

java带标签体的例子:

public void doTag() throws JspException, IOException {
    JspWriter out = getJspContext().getOut();
    out.println("<br>我是前缀,param=" + param + "<hr>");
    getJspBody().invoke(null);
    out.println("<br>我是后缀,param=" + param + "<hr>");
}

jsp带标签体的例子:

<my:simple param="123">
    我是页面内容
</my:simple>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值