View Javadoc

    1   /*
    2    * $Id: NestedFileTag.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.FileTag;
    24  import org.apache.struts.taglib.nested.NestedNameSupport;
    25  import org.apache.struts.taglib.nested.NestedPropertyHelper;
    26
    27  import javax.servlet.http.HttpServletRequest;
    28  import javax.servlet.jsp.JspException;
    29
    30  /**
    31   * NestedFileTag.
    32   *
    33   * @version $Rev: 471754 $
    34   * @since Struts 1.1
    35   */
    36  public class NestedFileTag extends FileTag implements NestedNameSupport {
    37      /* the usual private member variables */
    38      private String originalName = null;
    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          originalName = getName();
    52          originalProperty = getProperty();
    53
    54          // request
    55          HttpServletRequest request =
    56              (HttpServletRequest) pageContext.getRequest();
    57
    58          // set the properties
    59          NestedPropertyHelper.setNestedProperties(request, this);
    60
    61          // let the super do it's thing
    62          return super.doStartTag();
    63      }
    64
    65      /**
    66       * Complete the processing of the tag. The nested tags here will restore
    67       * all the original value for the tag itself and the nesting context.
    68       *
    69       * @return int to describe the next step for the JSP processor
    70       * @throws JspException for the bad things JSP's do
    71       */
    72      public int doEndTag() throws JspException {
    73          // do the super's ending part
    74          int i = super.doEndTag();
    75
    76          // reset the properties
    77          setName(originalName);
    78          setProperty(originalProperty);
    79
    80          // continue
    81          return i;
    82      }
    83
    84      /**
    85       * Release the tag's resources and reset the values.
    86       */
    87      public void release() {
    88          super.release();
    89
    90          // reset the originals
    91          originalName = null;
    92          originalProperty = null;
    93      }
    94  }