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文件。
1.0 2.0 show com.bn.car.core.tag.PartsTypeTag empty style false true rowid false true
第三步,在jsp页面上引用。
<%@ taglib uri="/WEB-INF/tld/partstypetag.tld" prefix="dd"%>
允许动态传参。需要在tld文件中配置rtexprvalue项。
需要的jar: jstl.jar,servlet.jar,standard.jar lib包。更多详细代码请看以下链接:
(文章写的挺好,但是在tld配置文件中出现了requried,rtexprvale 写法错误! 有误导,正确的写法应该是 required, rtexprvalue)