虽然html很好,尤其是html5越来越火,但仍有很多网站是用JSP做的,JSP里面虽然有很多标签,但我们是否可以自己定义自己的呢?当然可以,参考代码如下:
- 写自己的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();
}
}
- 对应的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>
<!–
<attribute>
<name>formatKey</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
–>
</tag>
</taglib>
- 具体哪个文件使用该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>–Select a request type Please–</option>
<%
for(int i = 0; i< requestTypes.size(); i++) {
RequestType requestType = requestTypes.get(i);
%>
<option value=
<%= requestType.getId() %>><%= requestType.getName() %>
</option>
<%
}
%>
</select>