JSP自定义标签

来源:互联网 发布:微耕门禁软件 编辑:程序博客网 时间:2024/06/05 20:51

标签描述文件

引用:

<%@ 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>
原创粉丝点击