虽然html很好,尤其是html5越来越火,但仍有很多网站是用JSP做的,JSP里面虽然有很多标签,但我们是否可以自己定义自己的呢?当然可以,参考代码如下:

  1. 写自己的taglib类,并重写里面的方法

public class DropDownBoxTaglib extends TagSupport {

    private static final long serialVersionUID = 1L;

    @Override

    public int doStartTag() throws JspTagException {

        return SKIP_BODY;

    }

    @Override

    public int doEndTag() throws JspTagException {

        HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();

        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

        RequestTypeService requestTypeService = (RequestTypeService) applicationContext.getBean("requestTypeService");

        List<RequestType> requestTypes = requestTypeService.query();

        request.setAttribute("REQUESTTYPES", requestTypes);

        try {

            pageContext.include("/component/request_type_select.jsp");

        } catch (ServletException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

        return EVAL_PAGE;

    }

    @Override

    public void release() {

        super.release();

    }

}
  1. 对应的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 web-jsptaglibrary_2_0.xsd"

        version="2.0">

    <tlib-version>1.0</tlib-version>

    <jsp-version>1.1</jsp-version>

    <short-name>aug</short-name>

    <tag>

        <name>select</name>

        <tag-class>cn.bridgeli.DropDownBoxTaglib</tag-class>

        <body-content>empty</body-content>

        <!&#8211;

        <attribute>

            <name>formatKey</name>

            <required>false</required>

            <rtexprvalue>true</rtexprvalue>

        </attribute>

        &#8211;>

    </tag>

</taglib>
  1. 具体哪个文件使用该taglib

<%@ page language="java" contentType="text/html; charset=UTF-8"

        pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%

        List<RequestType>requestTypes = (List
<RequestType>)request.getAttribute("REQUESTTYPES");

    %>

    <select name="requestTypeId" id="requestTypeId" style="width: 608px;">

        <option>&#8211;Select a request type Please&#8211;</option>

        <%

        for(int i = 0; i< requestTypes.size(); i++) {

        RequestType requestType = requestTypes.get(i);

        %>

        <option value=
        <%= requestType.getId() %>><%= requestType.getName() %>
    </option>

    <%

    }

    %>

</select>