View Javadoc

    1   /*
    2    * $Id: NestedSubmitTag.java 471754 2006-11-06 14:55:09Z husted $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
    10   * with the License.  You may obtain a copy of the License at
    11   *
    12   *  http://www.apache.org/licenses/LICENSE-2.0
    13   *
    14   * Unless required by applicable law or agreed to in writing,
    15   * software distributed under the License is distributed on an
    16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    17   * KIND, either express or implied.  See the License for the
    18   * specific language governing permissions and limitations
    19   * under the License.
    20   */
    21  package org.apache.struts.taglib.nested.html;
    22
    23  import org.apache.struts.taglib.html.SubmitTag;
    24  import org.apache.struts.taglib.nested.NestedPropertyHelper;
    25  import org.apache.struts.taglib.nested.NestedPropertySupport;
    26
    27  import javax.servlet.http.HttpServletRequest;
    28  import javax.servlet.jsp.JspException;
    29
    30  /**
    31   * NestedSubmitTag.
    32   *
    33   * @version $Rev: 471754 $ $Date: 2004-10-16 12:38:42 -0400 (Sat, 16 Oct 2004)
    34   *          $
    35   * @since Struts 1.1
    36   */
    37  public class NestedSubmitTag extends SubmitTag implements NestedPropertySupport {
    38      /* the usual private member variables */
    39      private String originalProperty = null;
    40
    41      /**
    42       * Overriding method of the heart of the matter. Gets the relative
    43       * property and leaves the rest up to the original tag implementation.
    44       * Sweet.
    45       *
    46       * @return int JSP continuation directive. This is in the hands of the
    47       *         super class.
    48       */
    49      public int doStartTag() throws JspException {
    50          // get the original properties
    51          originalProperty = getProperty();
    52
    53          // request
    54          HttpServletRequest request =
    55              (HttpServletRequest) pageContext.getRequest();
    56
    57          // set the properties
    58          NestedPropertyHelper.setNestedProperties(request, this);
    59
    60          // let the super do it's thing
    61          return super.doStartTag();
    62      }
    63
    64      /**
    65       * Complete the processing of the tag. The nested tags here will restore
    66       * all the original value for the tag itself and the nesting context.
    67       *
    68       * @return int to describe the next step for the JSP processor
    69       * @throws JspException for the bad things JSP's do
    70       */
    71      public int doEndTag() throws JspException {
    72          // do the super's ending part
    73          int i = super.doEndTag();
    74
    75          // reset the properties
    76          setProperty(originalProperty);
    77
    78          // continue
    79          return i;
    80      }
    81
    82      /**
    83       * Release the tag's resources and reset the values.
    84       */
    85      public void release() {
    86          super.release();
    87
    88          // reset the originals
    89          originalProperty = null;
    90      }
    91  }