zoukankan      html  css  js  c++  java
  • jsp自定义标签分析

    jsp自定义标签的优势体现在于jsp页面上面减少了java代码.

    jsp自定义标签有三大部分组成,首先是类继承TagSupport,实现doStartTag方法.

    public int doStartTag() throws JspException {
            log.info("partsMgrService:" + partsMgrService);
            log.info("Log style: " + style);
            log.info("Log rowid: " + rowid);
    
            StringBuffer html = new StringBuffer();
            List li = partsMgrService.listTreePartsType();
    
            for (int i = 0; i < li.size(); i++) {
                PartsTypeDTO dto = (PartsTypeDTO) li.get(i);
                if (style.equals("header") || style == "header") {
                    styleHeaderJsp(html, dto);
                } else if (style.equals("mall") || style == "mall") {
                    styleMallJsp(i, html, dto);
                }
            }
    
            log.info("html:" + html.toString());
            JspWriter out = pageContext.getOut();
            try {
                out.print(html.toString());
            } catch (IOException e) {
                e.printStackTrace();
            }
            return Tag.SKIP_BODY;
        }

    如果存在属性,需要提供get,set方法。另外一个是tag中的Service对象不能依赖注入。需要使用getBean()方法获取。

    第二步,创建tld文件。

    <?xml version="1.0" encoding="UTF-8"?>
    <taglib version="2.0" 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 web-jsptaglibrary_2_0.xsd">
    
        <tlib-version>1.0</tlib-version>
        <jsp-version>2.0</jsp-version>
        <tag>
            <name>show</name>
            <tag-class>com.bn.car.core.tag.PartsTypeTag</tag-class>
            <body-content>empty</body-content>
            <attribute>
                <name>style</name> <!-- 属性名字 -->
                <required>false</required> <!-- 是否必须 -->
                <rtexprvalue>true</rtexprvalue> <!-- 表示是否可以使用JSP表达式 -->
            </attribute>
            <attribute>
                <name>rowid</name> <!-- 属性名字 -->
                <required>false</required> <!-- 是否必须 -->
                <rtexprvalue>true</rtexprvalue> <!-- 表示是否可以使用JSP表达式 -->
            </attribute>
        </tag>
    </taglib>

    第三步,在jsp页面上引用。

    <%@ taglib uri="/WEB-INF/tld/partstypetag.tld" prefix="dd"%>
    
    <dd:show style="mall" rowid="<%=_ul %>"/> 

    允许动态传参。需要在tld文件中配置rtexprvalue项。

    需要的jar: jstl.jar,servlet.jar,standard.jar lib包。更多详细代码请看以下链接:

    http://developer.51cto.com/art/200907/134263.htm

    (文章写的挺好,但是在tld配置文件中出现了requried,rtexprvale 写法错误! 有误导,正确的写法应该是 required, rtexprvalue)

  • 相关阅读:
    2021 6 3
    2021 5月 读书笔记
    2021 6 1
    第十三周 2021.05.30
    spring security permitAll不生效
    springboot配置jpa提示Unable to resolve name [mysql] as strategy
    element el-form-item el-input宽度设置
    vue+element表格中使用render函数(if判断处理)
    elementui移除tab报Avoided redundant navigation to current location: ***
    el-dropdown-item添加@click不生效
  • 原文地址:https://www.cnblogs.com/simpledev/p/3475100.html
Copyright © 2011-2022 走看看