public void release() { super.release(); bean = null; name = null; method_prefix = null; startTag_xslt = null; endTag_xslt = null; }
/** * Execute the tags within the given DCP content and return the resulting DCP content * * @param content String the DCP content to process * @return String the DCP content after tags execution */ public String executeTags(String content) { StringBuffer result = null; StringBuffer buffer = new StringBuffer(content); for (TagSupport tag : tags) { result = new StringBuffer(); Matcher matcher = tag.getPattern().matcher(buffer); while (matcher.find()) { log.debug("Found tag " + matcher.group()); String tagBody = matcher.groupCount() > 0 ? matcher.group(1) : null; matcher.appendReplacement(result, tag.execute(tagBody)); } matcher.appendTail(result); buffer = result; } return result == null ? content : result.toString(); }
public int doStartTag() throws JspException { IterateTag itag = (IterateTag) TagSupport.findAncestorWithClass(this, IterateTag.class); if (itag == null) { Debug.println("RowTag.doStartTag: no enclosing 'iterate' tag found."); } else if (itag.isEmpty()) { return Tag.SKIP_BODY; } else { current_row = itag.currentElement(); if (current_row != null && itag.getBeanId() != null) { // This is so that if the current row is a bean, jsp:useBean will work // inside of iterations. pageContext.setAttribute(itag.getBeanId(), current_row); Debug.println("storing record in page scope: " + current_row); } return (current_row == null ? Tag.SKIP_BODY // no more elements. iteration complete. : Tag.EVAL_BODY_INCLUDE); } return Tag.SKIP_BODY; }
@Override public void release() { bodyContent = null; super.release(); }