Package org.apache.cactus.sample.servlet

Source Code of org.apache.cactus.sample.servlet.SampleTag

/*
* ========================================================================
*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* ========================================================================
*/
package org.apache.cactus.sample.servlet;

import java.io.IOException;

import java.util.Enumeration;

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

/**
* Sample tag that implements simple tag logic.
*
* @version $Id: SampleTag.java 238835 2004-03-06 20:59:41Z vmassol $
*/
public class SampleTag extends TagSupport
{
    /**
     * Determines whether the tag's body should be shown.
     */
    private boolean showBody;

    /**
     * Determines whether page should continue after the tag.
     */
    private boolean stopPage;

    /**
     * Determines whether the tag's body should be shown.
     *
     * @param isBodyShown a String equaling 'true' will be taken as
     *                 <code>true</code>. Anything else will be
     *                 taken as <code>false</code>.
     */
    public void setShowBody(String isBodyShown)
    {
        this.showBody = "true".equals(isBodyShown.toLowerCase());
    }

    /**
     * Determines whether page should stop after the tag.
     *
     * @param isPageStopped a String equaling 'true' will be taken as
     *                 <code>true</code>. Anything else will be
     *                 taken as <code>false</code>.
     */
    public void setStopPage(String isPageStopped)
    {
        this.stopPage = "true".equals(isPageStopped);
    }

    /**
     * Prints the names and values of everything in page scope to the response,
     * along with the body (if showBody is set to <code>true</code>).
     *
     * @return the return code
     * @exception JspTagException on failure
     */
    public int doStartTag() throws JspTagException
    {
        Enumeration names = pageContext.getAttributeNamesInScope(
            PageContext.PAGE_SCOPE);

        JspWriter out = pageContext.getOut();

        try
        {
            out.println("The following attributes exist in page scope: <BR>");

            while (names.hasMoreElements())
            {
                String name = (String) names.nextElement();
                Object attribute = pageContext.getAttribute(name);

                out.println(name + " = " + attribute + " <BR>");
            }

            if (this.showBody)
            {
                out.println("Body Content Follows: <BR>");

                return EVAL_BODY_INCLUDE;
            }
        }
        catch (IOException e)
        {
            throw new JspTagException(e.getMessage());
        }

        return SKIP_BODY;
    }

    /**
     * Does two things:
     * <ul>
     *      <li>Stops the page if the corresponding attribute has been set</li>
     *      <li>Prints a message another tag encloses this one.</li>
     * </ul>
     *
     * @return the return code
     * @exception JspTagException on failure
     */
    public int doEndTag() throws JspTagException
    {
        //get the parent if any
        Tag parent = this.getParent();

        if (parent != null)
        {
            try
            {
                JspWriter out = this.pageContext.getOut();

                out.println("This tag has a parent. <BR>");
            }
            catch (IOException e)
            {
                throw new JspTagException(e.getMessage());
            }
        }

        if (this.stopPage)
        {
            return Tag.SKIP_PAGE;
        }

        return Tag.EVAL_PAGE;
    }
}
TOP

Related Classes of org.apache.cactus.sample.servlet.SampleTag

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.