package cn.org.rapid_framework.web.tags; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyContent; import javax.servlet.jsp.tagext.BodyTagSupport; /** * @author badqiu */ public class OverrideTag extends BodyTagSupport{ private static final long serialVersionUID = -8379959647039117369L; private String name; public void setName(String name) { this.name = name; } @Override public int doStartTag() throws JspException { return isOverrided() ? SKIP_BODY : EVAL_BODY_BUFFERED; } @Override public int doEndTag() throws JspException { if(isOverrided()) { return EVAL_PAGE; } BodyContent b = getBodyContent(); // System.out.println("Override.content:"+b.getString()); String varName = Utils.getOverrideVariableName(name); pageContext.getRequest().setAttribute(varName, b.getString()); return EVAL_PAGE; } private boolean isOverrided() { String varName = Utils.getOverrideVariableName(name); return pageContext.getRequest().getAttribute(varName) != null; } }