参考 http://www.jellythink.com/archives/1405
创建tld文件 http://greybeard.iteye.com/blog/1133137
New ----> XML ----> XML File ----> 输入test.tld
----> Create XML file from a DTD file ----> Select XML Catalog entry
----> -//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN
----> finish
实现的效果是 传入id,查询到产品详情的标签,并用li元素包含单个标签
以下是代码文件:
xxx.tld 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd" >
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Example TLD</short-name>
<tag>
<name>ProductTag</name>
<tag-class>com.test.commons.ProductTag</tag-class>
<body-content>empty</body-content>
<!-- name,设置属性名;在使用自定义标签时,就是通过该名指定属性名 -->
<!--required,设置该属性是否为必须属性,取值为true或false -->
<!--fragment,设置该属性是否支持JSP脚本、表达式等动态内容,取值为true或false -->
<attribute>
<name>id</name>
<required>true</required>
<fragment>true</fragment>
</attribute>
</tag>
</taglib>
标签类
public class ProductTag extends SimpleTagSupport {
private Long id;
public void doTag() throws JspException, IOException {
JspWriter writer = getJspContext().getOut();
// 获取Spring上下文
PageContext pageContext = (PageContext) this.getJspContext();
ServletContext servletContext = pageContext.getServletContext();
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
// 从上下文中获取指定的Bean
ProductDetailService productDetailService = (ProductDetailService) wac.getBean("productDetailServiceImpl");
ProductDetailEntity productDitail = productDetailService.getByProductId(id);
String tags = productDitail.getTag();
if (XMUtils.isValidString(tags)) {
for (String str : tags.split("#")) {//格式举例: #热门#推荐#优惠
writer.write("<li>");
writer.write(str);
writer.write("</li>");
}
}
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
在jsp页面中使用
<%@ taglib prefix="xm" uri="/WEB-INF/xxx.tld"%>
<xm:ProductTag id="填写你需要查询的id" />