zoukankan      html  css  js  c++  java
  • JSTL--简单标签

    自定义标签

    1. 创建一个标签处理器类,实现javax.servlet.jsp.tagext.SimpleTag接口。

    2. 在WEB-INF文件夹下新建一个.tld(标签库描述文件)为扩展名的xml文件。

    tld文件示例:

    <?xml version="1.0" encoding="UTF-8" ?>
    ​​<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0">
    <description>my jsp tag library</description>
    <display-name>MJSTL core</display-name>
    <tlib-version>1.1</tlib-version>
    
    <!-- 建议在JSP页面上使用的标签的前缀 -->
    <short-name>myjst</short-name>

    <!-- 作为tld文件的id,用来唯一标识当前的tld文件,多个tld文件的uri不能重复通过JSP页面的taglib标签的uri属性来引用--> <uri>http://javaweb.test.ldj.com</uri> <!-- 描述自定义的MySimpleTag标签 --> <tag>   <!-- 标签的名字:在JSP页面上使用标签的名字 -->   <name>hello</name>   <!-- 标签所在类的全类名 -->   <tag-class>jstl.MySimpleTag</tag-class>   <!-- 标签体的类型 -->   <body-content>empty</body-content> </tag> </taglib>

    3. 在JSP页面中导入自定义的标签库:<%@ taglib uri="http://javaweb.test.ldj.com" prefix="myjst" %>。

    4. 在JSP页面中使用自定义的标签:<myjst:hello/>。

    javax.servlet.jsp.tagext.SimpleTag.setJspContext() 一定会被JSP引擎调用,用于向当前标签处理器类传入当前JSP页面的PageContext(JSP内置的9大对象之一,凭其可获取到其它8个对象)。

    private PageContext pageContext;
      @Override
      public void setJspContext(JspContext arg0) {
        System.out.println(arg0 instanceof PageContext);
        this.pageContext = (PageContext)arg0;
    }

    带属性的自定义标签

    1.先在标签处理器类中定义setter方法,建议把所有的属性类型都定义为String类型。

    2.在tld文件中的tag节点下添加属性描述:

    <!-- 描述当前标签的属性 -->
    <attribute>
      <!-- 属性名,需和标签处理器类的setter方法定义的属性相同-->
      <name>value</name>
      <!-- 该属性是否是必须的 -->
      <required>true</required>
      <!-- rtexprvalue: runtime expression value, 当前属性是否可以接受运行时表达式的动态值 -->
      <rtexprvalue>true</rtexprvalue>
    </attribute>

    3.在页面中使用属性,属性名同tld文件中定义的名字。

  • 相关阅读:
    Common Lisp 参数传递的几种形式
    EF架构~基于EF数据层的实现
    标准架构~业务层到底是否应该关注数据持久化的方式
    Redis学习笔记~Redis主从服务器,读写分离
    Redis学习笔记~是时候为Redis实现一个仓储了,RedisRepository来了
    MVVM架构~knockoutjs系列之数组的$index和$data
    【Oracle】-【sqlplus / as sysdba登录报错问题】-新用户使用sqlplus / as sysdba登录报错
    Android---App Widget(一)
    Mit 分布式系统导论,Distributed Systems ,lab1 -lab6 总结,实验一到实验六总结
    GDAL切割重采样遥感图像
  • 原文地址:https://www.cnblogs.com/itfky/p/13728270.html
Copyright © 2011-2022 走看看