Example usage for javax.servlet.jsp.tagext JspFragment JspFragment

List of usage examples for javax.servlet.jsp.tagext JspFragment JspFragment

Introduction

In this page you can find the example usage for javax.servlet.jsp.tagext JspFragment JspFragment.

Prototype

JspFragment

Source Link

Usage

From source file:de.micromata.genome.gwiki.page.gspt.TagSupport.java

public static void initSimpleSimpleTag(SimpleTag tag, List<Object> attributes, final ChildPageContext ctx,
        final Closure body) throws Exception {
    if (log.isDebugEnabled())
        log.debug("Init simple tag: " + tag.getClass().getName());
    Tag ptag = ctx.getCurrentTag();// www .  j  av  a  2  s.  co m
    final JspContext pctx;// .getBrickContext().getPageContext();
    if (ctx.isUseParentTagContext() == true) {
        pctx = ctx.getParentPageContext();
    } else {
        pctx = ctx;
    }
    tag.setJspContext(pctx);
    tag.setParent(ptag);
    attributes = evalAttributes(tag, attributes, ctx);
    setAttributes(tag, attributes, ctx);
    final TagAdapter tagAdapter = new TagAdapter(tag);
    ctx.setCurrentTag(tagAdapter);
    tag.setJspBody(new JspFragment() {
        @Override
        public JspContext getJspContext() {
            return pctx;
        }

        @Override
        public void invoke(Writer out) throws JspException, IOException {
            ctx.getTagStack().push(new Pair<Tag, Integer>(tagAdapter, -1));
            try {
                JspWriter oldOut = null;
                try {
                    if (pctx instanceof ChildPageContext) {
                        oldOut = pctx.getOut();
                        if (out != oldOut) {
                            ((ChildPageContext) pctx).setInternalGroovyOut(createPrintWriter(out));
                        } else {
                            oldOut = null;
                        }
                    }
                    body.call();
                } finally {
                    if (oldOut != null) {
                        pctx.getOut().flush();
                        ((ChildPageContext) pctx).setInternalGroovyOut(createPrintWriter(oldOut));
                    }
                }
            } finally {
                ctx.getTagStack().pop();
            }
        }
    });
    tag.doTag();
    ctx.setCurrentTag(ptag);
}