View Javadoc

    1   /*
    2    * $Id: ELIterateTag.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.strutsel.taglib.logic;
    22
    23  import org.apache.struts.taglib.logic.IterateTag;
    24  import org.apache.strutsel.taglib.utils.EvalHelper;
    25
    26  import javax.servlet.jsp.JspException;
    27
    28  /**
    29   * Custom tag that iterates the elements of a collection, which can be either
    30   * an attribute or the property of an attribute.  The collection can be any of
    31   * the following:  an array of objects, an Enumeration, an Iterator, a
    32   * Collection (which includes Lists, Sets and Vectors), or a Map (which
    33   * includes Hashtables) whose elements will be iterated over. <p> This class
    34   * is a subclass of the class <code>org.apache.struts.taglib.logic.IterateTag</code>
    35   * which provides most of the described functionality.  This subclass allows
    36   * all attribute values to be specified as expressions utilizing the
    37   * JavaServer Pages Standard Library expression language.
    38   *
    39   * @version $Rev: 471754 $
    40   */
    41  public class ELIterateTag extends IterateTag {
    42      /**
    43       * Instance variable mapped to "collection" tag attribute. (Mapping set in
    44       * associated BeanInfo class.)
    45       */
    46      private String collectionExpr;
    47
    48      /**
    49       * Instance variable mapped to "id" tag attribute. (Mapping set in
    50       * associated BeanInfo class.)
    51       */
    52      private String idExpr;
    53
    54      /**
    55       * Instance variable mapped to "indexId" tag attribute. (Mapping set in
    56       * associated BeanInfo class.)
    57       */
    58      private String indexIdExpr;
    59
    60      /**
    61       * Instance variable mapped to "length" tag attribute. (Mapping set in
    62       * associated BeanInfo class.)
    63       */
    64      private String lengthExpr;
    65
    66      /**
    67       * Instance variable mapped to "name" tag attribute. (Mapping set in
    68       * associated BeanInfo class.)
    69       */
    70      private String nameExpr;
    71
    72      /**
    73       * Instance variable mapped to "offset" tag attribute. (Mapping set in
    74       * associated BeanInfo class.)
    75       */
    76      private String offsetExpr;
    77
    78      /**
    79       * Instance variable mapped to "property" tag attribute. (Mapping set in
    80       * associated BeanInfo class.)
    81       */
    82      private String propertyExpr;
    83
    84      /**
    85       * Instance variable mapped to "scope" tag attribute. (Mapping set in
    86       * associated BeanInfo class.)
    87       */
    88      private String scopeExpr;
    89
    90      /**
    91       * Instance variable mapped to "type" tag attribute. (Mapping set in
    92       * associated BeanInfo class.)
    93       */
    94      private String typeExpr;
    95
    96      /**
    97       * Getter method for "collection" tag attribute. (Mapping set in
    98       * associated BeanInfo class.)
    99       */
    100     public String getCollectionExpr() {
    101         return (collectionExpr);
    102     }
    103
    104     /**
    105      * Getter method for "id" tag attribute. (Mapping set in associated
    106      * BeanInfo class.)
    107      */
    108     public String getIdExpr() {
    109         return (idExpr);
    110     }
    111
    112     /**
    113      * Getter method for "indexId" tag attribute. (Mapping set in associated
    114      * BeanInfo class.)
    115      */
    116     public String getIndexIdExpr() {
    117         return (indexIdExpr);
    118     }
    119
    120     /**
    121      * Getter method for "length" tag attribute. (Mapping set in associated
    122      * BeanInfo class.)
    123      */
    124     public String getLengthExpr() {
    125         return (lengthExpr);
    126     }
    127
    128     /**
    129      * Getter method for "name" tag attribute. (Mapping set in associated
    130      * BeanInfo class.)
    131      */
    132     public String getNameExpr() {
    133         return (nameExpr);
    134     }
    135
    136     /**
    137      * Getter method for "offset" tag attribute. (Mapping set in associated
    138      * BeanInfo class.)
    139      */
    140     public String getOffsetExpr() {
    141         return (offsetExpr);
    142     }
    143
    144     /**
    145      * Getter method for "property" tag attribute. (Mapping set in associated
    146      * BeanInfo class.)
    147      */
    148     public String getPropertyExpr() {
    149         return (propertyExpr);
    150     }
    151
    152     /**
    153      * Getter method for "scope" tag attribute. (Mapping set in associated
    154      * BeanInfo class.)
    155      */
    156     public String getScopeExpr() {
    157         return (scopeExpr);
    158     }
    159
    160     /**
    161      * Getter method for "type" tag attribute. (Mapping set in associated
    162      * BeanInfo class.)
    163      */
    164     public String getTypeExpr() {
    165         return (typeExpr);
    166     }
    167
    168     /**
    169      * Setter method for "collection" tag attribute. (Mapping set in
    170      * associated BeanInfo class.)
    171      */
    172     public void setCollectionExpr(String collectionExpr) {
    173         this.collectionExpr = collectionExpr;
    174     }
    175
    176     /**
    177      * Setter method for "id" tag attribute. (Mapping set in associated
    178      * BeanInfo class.)
    179      */
    180     public void setIdExpr(String idExpr) {
    181         this.idExpr = idExpr;
    182     }
    183
    184     /**
    185      * Setter method for "indexId" tag attribute. (Mapping set in associated
    186      * BeanInfo class.)
    187      */
    188     public void setIndexIdExpr(String indexIdExpr) {
    189         this.indexIdExpr = indexIdExpr;
    190     }
    191
    192     /**
    193      * Setter method for "length" tag attribute. (Mapping set in associated
    194      * BeanInfo class.)
    195      */
    196     public void setLengthExpr(String lengthExpr) {
    197         this.lengthExpr = lengthExpr;
    198     }
    199
    200     /**
    201      * Setter method for "name" tag attribute. (Mapping set in associated
    202      * BeanInfo class.)
    203      */
    204     public void setNameExpr(String nameExpr) {
    205         this.nameExpr = nameExpr;
    206     }
    207
    208     /**
    209      * Setter method for "offset" tag attribute. (Mapping set in associated
    210      * BeanInfo class.)
    211      */
    212     public void setOffsetExpr(String offsetExpr) {
    213         this.offsetExpr = offsetExpr;
    214     }
    215
    216     /**
    217      * Setter method for "property" tag attribute. (Mapping set in associated
    218      * BeanInfo class.)
    219      */
    220     public void setPropertyExpr(String propertyExpr) {
    221         this.propertyExpr = propertyExpr;
    222     }
    223
    224     /**
    225      * Setter method for "scope" tag attribute. (Mapping set in associated
    226      * BeanInfo class.)
    227      */
    228     public void setScopeExpr(String scopeExpr) {
    229         this.scopeExpr = scopeExpr;
    230     }
    231
    232     /**
    233      * Setter method for "type" tag attribute. (Mapping set in associated
    234      * BeanInfo class.)
    235      */
    236     public void setTypeExpr(String typeExpr) {
    237         this.typeExpr = typeExpr;
    238     }
    239
    240     /**
    241      * Releases state of custom tag so this instance can be reused.
    242      */
    243     public void release() {
    244         super.release();
    245         setCollectionExpr(null);
    246         setIdExpr(null);
    247         setIndexIdExpr(null);
    248         setLengthExpr(null);
    249         setNameExpr(null);
    250         setOffsetExpr(null);
    251         setPropertyExpr(null);
    252         setScopeExpr(null);
    253         setTypeExpr(null);
    254     }
    255
    256     /**
    257      * Process the start tag.
    258      *
    259      * @throws JspException if a JSP exception has occurred
    260      */
    261     public int doStartTag() throws JspException {
    262         evaluateExpressions();
    263
    264         return (super.doStartTag());
    265     }
    266
    267     /**
    268      * Processes all attribute values which use the JSTL expression evaluation
    269      * engine to determine their values.
    270      *
    271      * @throws JspException if a JSP exception has occurred
    272      */
    273     private void evaluateExpressions()
    274         throws JspException {
    275         String string = null;
    276         Object object = null;
    277
    278         if ((object =
    279                 EvalHelper.eval("collection", getCollectionExpr(), this,
    280                     pageContext)) != null) {
    281             setCollection(object);
    282         }
    283
    284         if ((string =
    285                 EvalHelper.evalString("id", getIdExpr(), this, pageContext)) != null) {
    286             setId(string);
    287         }
    288
    289         if ((string =
    290                 EvalHelper.evalString("indexId", getIndexIdExpr(), this,
    291                     pageContext)) != null) {
    292             setIndexId(string);
    293         }
    294
    295         if ((string =
    296                 EvalHelper.evalString("length", getLengthExpr(), this,
    297                     pageContext)) != null) {
    298             setLength(string);
    299         }
    300
    301         if ((string =
    302                 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) {
    303             setName(string);
    304         }
    305
    306         if ((string =
    307                 EvalHelper.evalString("offset", getOffsetExpr(), this,
    308                     pageContext)) != null) {
    309             setOffset(string);
    310         }
    311
    312         if ((string =
    313                 EvalHelper.evalString("property", getPropertyExpr(), this,
    314                     pageContext)) != null) {
    315             setProperty(string);
    316         }
    317
    318         if ((string =
    319                 EvalHelper.evalString("scope", getScopeExpr(), this, pageContext)) != null) {
    320             setScope(string);
    321         }
    322
    323         if ((string =
    324                 EvalHelper.evalString("type", getTypeExpr(), this, pageContext)) != null) {
    325             setType(string);
    326         }
    327     }
    328 }