1,web.xml配置:
....
<jsp-config>
<!-- 商城信息的标签-->
<taglib>
<taglib-uri>/mallListuri</taglib-uri>
<taglib-location>/WEB-INF/tlds/mallListTag.tld</taglib-location>
</taglib>
</jsp-config>
....
2,在/WEB-INF/tlds/路径下,新建TLD文件,格式如下:
<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>
<short-name>mallSearchTag</short-name>
<uri>/WEB-INF/tlds/mallSearchTag</uri>
<!-- 商城搜索 -->
<tag>
<!-- 定义标签名 -->
<name>mallSearch</name>
<!-- 定义标签处理类 -->
<tag-class>com.esigma.fan.tags.MallSearchTag</tag-class>
<!-- 定义标签体支持JSP脚本 -->
<body-content>scriptless</body-content>
<!-- 配置标签属性:keyWords -->
<attribute>
<name>keyWords</name>
<fragment>true</fragment>
<rtexprvalue>true</rtexprvalue> <!-- 属性值是否可以为request-time表达式,也就是类似于< %=…% >的表达式 -->
</attribute>
<attribute>
<name>items</name>
<required>true</required> <!-- 属性是否必需的,默认为false -->
<fragment>true</fragment> <!-- 设置该属性是否支持 JSP 脚本、表达式等动态内容,子元素的值是 true 或 false。-->
</attribute>
.........
...........
</tag>
</taglib>
3,自定义标签处理类,MallSearchTag:
public class MallSearchTag extends SimpleTagSupport {
.........
public void doTag() throws JspException, IOException {
........
getJspContext().setAttribute(... , ...);
getJspBody().invoke(null);
}
}
4,jsp中引入标签
<%@ taglib prefix="mallSearchTag" uri="/mallSearchuri" %>
<mallSearchTag:mallSearch
keyWords="${param.keyWords!=null ? param.keyWords:''}"
keyWordType="${param.keyWordType!=null ? param.keyWordType:'1'}"
startPage="${param.startPage!=null ? param.startPage:1}"
pageSize="${param.pageSize!=null ? param.pageSize:28}"
items="malls"
page="page"
pageHtml="pageHtml">
<c:set var="mallList" value="${malls}" />
<c:set var="page" value="${page}" />
<c:set var="pageHtml" value="${pageHtml}" />
</mallSearchTag:mallSearch>
<c:forEach var="mall" items="${mallList}">
.....${mall.id}...
.....${mall.logo}...
</c:forEach>
<mallListTag:mallList flag="0" pageSize="10" item="item">
...${pageScope.item.name}.....
....${pageScope.item.rewardCeil}...
</mallListTag:mallList>