自定义标签的使用

 自定义标签的使用

注:prjtag工程

1)普通自定义标签

aJSP页面:

       <%@ taglib prefix="p" uri="http://wwww.phome.mytaglib" %>

Body标签体中

       <p:hello str1="tom"/>       这两个uri保持一致

b:自定义标签文件

       WEB-INT/tlds这个目录下定义mytag.tld文件,类似于jstlc.tld文件,拷贝前十二行到mytag.tld文件中

       ………………

  <uri>http://wwww.phome.mytaglib</uri>

  <tag>

    <name>hello</name><!-- 自定义标签的名字,类似于core下的if标签-->

    <tag-class>com.phome.test1.MyTag</tag-class><!-- 自定义标签对应src下的具体类-->

    <body-content>empty</body-content><!-- 自定义标签体的格式,empty表示没有 标签体-->

    <attribute>

        <name>str1</name><!-- 自定义标签属性名称-->

        <required>true</required><!-- 属性是否是必须的-->

        <rtexprvalue>true</rtexprvalue><!-- 是否允许EL表达式-->

        <type>java.lang.String</type>

    </attribute>

  </tag>                 标签处理类

c:支持的类,src目录下建立bao

//支持自定义标签的类

public class MyTag extends SimpleTagSupport {

    private String str1 ;

    public String getStr1() {return str1;}

public void setStr1(String str1) {this.str1 = str1;}

public void doTag() throws JspException, IOException {

       //获得out对象引用

       JspWriter out = this.getJspContext().getOut();

       Date  now=new Date();

       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

       out.println(str1);

       out.println(sdf.format(now));

    }

}

2)标签文件1,没有标签体

aJSP页面:tfile.jsp

       <%@ taglib prefix="h" tagdir="/WEB-INF/tags" %>

Body标签体中

       <h:hello></h:hello>

b:自定义标签文件

WEB-INT/tags这个目录下定义hello.tag文件

<%@ tag pageEncoding="utf-8" language="java" isELIgnored="false" import="java.util.Date" body-content="empty"%>

${"My Hello Tag File"}

3)标签文件2,有标签体

aJSP页面:tagva.jsp

       <%@ taglib prefix="h" tagdir="/WEB-INF/tags" %>

Body标签体中

       <h:hello></h:hello>

b:自定义标签文件

WEB-INT/tags这个目录下定义tagva.tag文件

<%@tag import="java.text.SimpleDateFormat"%><%@ tag pageEncoding="utf-8" body-content="scriptless" language="java" import="java.util.Date" isELIgnored="false"%>

<%@ attribute name="str1" required="true" rtexprvalue="true"%>

<%@ variable name-given="FullDate" scope="NESTED"%>

<%

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");

String strNow = sdf.format(date);

this.getJspContext().setAttribute("FullDate",strNow);

%>

${str1}<jsp:doBody></jsp:doBody>

注:scope 的三个属性:

(1)       NESTED在标签内事有效的

(2)       AT_BEGIN,在标签之前是有效的

(3)       AT_END在标签之后是有效的

注:标签文件的属性分为值属性和碎片属性

碎片属性的测试

aJSP页面:invoke.jsp

       <%@ taglib prefix="i" tagdir="/WEB-INF/tags" %>

Body标签体中

       <i:invoke>

    <jsp:attribute name="myatt">fdfdfdfd</jsp:attribute>

    </i:invoke>

  </body>b:自定义标签文件

WEB-INT/tags这个目录下定义invoke.tag文件

<%@ tag language="java" pageEncoding="utf-8" body-content="scriptless" isELIgnored="false" import="java.util.Date"%>

<%@ attribute name="myatt"  required="false"  fragment="true" %><!-- fragment是否是粉碎的 碎片属性的作用是可以写jsp代码,jsp:invoke直接在页面调用-->

<jsp:invoke fragment="myatt"></jsp:invoke>

(4)   自定义标签的综合使用

将一个网页上相同的部分定义到标签文件中register.jsp/login.jsp、、

标签文件tagss.tag

<%@ tag pageEncoding="utf-8" language="java" isELIgnored="false" body-content="scriptless"%>

…….t头部

<jsp:doBody></jsp:doBody>

……..尾部

Jsp页面

<%@ taglib prefix="p" tagdir="/WEB-INF/tags" %>

<p:tagss>

网站主体

</p:tagss>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值