package cn.org.rapid_framework.web.tags;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
/**
*
* @author badqiu
*
*/
public class BlockTag extends TagSupport{
private static final long serialVersionUID = -8246166191638588615L;
private String name;
public void setName(String name) {
this.name = name;
}
/**
* @return EVAL_BODY_INCLUDE or EVAL_BODY_BUFFERED or SKIP_BODY
*/
@Override
public int doStartTag() throws JspException {
return getOverriedContent() == null ? EVAL_BODY_INCLUDE : SKIP_BODY;
}
/**
* @return EVAL_PAGE or SKIP_PAGE
*/
@Override
public int doEndTag() throws JspException {
String overriedContent = getOverriedContent();
if(overriedContent == null) {
return EVAL_PAGE;
}
try {
pageContext.getOut().write(overriedContent);
} catch (IOException e) {
throw new JspException("write overridedContent occer IOException,block name:"+name,e);
}
return EVAL_PAGE;
}
private String getOverriedContent() {
String varName = Utils.getOverrideVariableName(name);
return (String)pageContext.getRequest().getAttribute(varName);
}
}