View Javadoc

    1   /*
    2    * $Id: ELMessagesTag.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.html;
    22
    23  import org.apache.struts.taglib.html.MessagesTag;
    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 message collection. It defaults
    30   * to retrieving the messages from <code>Action.ERROR_KEY</code>, but if the
    31   * message attribute is set to true then the messages will be retrieved from
    32   * <code>Action.MESSAGE_KEY</code>. This is an alternative to the default
    33   * <code>ErrorsTag</code>. <p> This class is a subclass of the class
    34   * <code>org.apache.struts.taglib.html.MessagesTag</code> which provides most
    35   * of the described functionality.  This subclass allows all attribute values
    36   * to be specified as expressions utilizing the JavaServer Pages Standard
    37   * Library expression language.
    38   *
    39   * @version $Rev: 471754 $
    40   */
    41  public class ELMessagesTag extends MessagesTag {
    42      /**
    43       * Instance variable mapped to "id" tag attribute. (Mapping set in
    44       * associated BeanInfo class.)
    45       */
    46      private String idExpr;
    47
    48      /**
    49       * Instance variable mapped to "bundle" tag attribute. (Mapping set in
    50       * associated BeanInfo class.)
    51       */
    52      private String bundleExpr;
    53
    54      /**
    55       * Instance variable mapped to "locale" tag attribute. (Mapping set in
    56       * associated BeanInfo class.)
    57       */
    58      private String localeExpr;
    59
    60      /**
    61       * Instance variable mapped to "name" tag attribute. (Mapping set in
    62       * associated BeanInfo class.)
    63       */
    64      private String nameExpr;
    65
    66      /**
    67       * Instance variable mapped to "property" tag attribute. (Mapping set in
    68       * associated BeanInfo class.)
    69       */
    70      private String propertyExpr;
    71
    72      /**
    73       * Instance variable mapped to "header" tag attribute. (Mapping set in
    74       * associated BeanInfo class.)
    75       */
    76      private String headerExpr;
    77
    78      /**
    79       * Instance variable mapped to "footer" tag attribute. (Mapping set in
    80       * associated BeanInfo class.)
    81       */
    82      private String footerExpr;
    83
    84      /**
    85       * Instance variable mapped to "message" tag attribute. (Mapping set in
    86       * associated BeanInfo class.)
    87       */
    88      private String messageExpr;
    89
    90      /**
    91       * Getter method for "id" tag attribute. (Mapping set in associated
    92       * BeanInfo class.)
    93       */
    94      public String getIdExpr() {
    95          return (idExpr);
    96      }
    97
    98      /**
    99       * Getter method for "bundle" tag attribute. (Mapping set in associated
    100      * BeanInfo class.)
    101      */
    102     public String getBundleExpr() {
    103         return (bundleExpr);
    104     }
    105
    106     /**
    107      * Getter method for "locale" tag attribute. (Mapping set in associated
    108      * BeanInfo class.)
    109      */
    110     public String getLocaleExpr() {
    111         return (localeExpr);
    112     }
    113
    114     /**
    115      * Getter method for "name" tag attribute. (Mapping set in associated
    116      * BeanInfo class.)
    117      */
    118     public String getNameExpr() {
    119         return (nameExpr);
    120     }
    121
    122     /**
    123      * Getter method for "property" tag attribute. (Mapping set in associated
    124      * BeanInfo class.)
    125      */
    126     public String getPropertyExpr() {
    127         return (propertyExpr);
    128     }
    129
    130     /**
    131      * Getter method for "header" tag attribute. (Mapping set in associated
    132      * BeanInfo class.)
    133      */
    134     public String getHeaderExpr() {
    135         return (headerExpr);
    136     }
    137
    138     /**
    139      * Getter method for "footer" tag attribute. (Mapping set in associated
    140      * BeanInfo class.)
    141      */
    142     public String getFooterExpr() {
    143         return (footerExpr);
    144     }
    145
    146     /**
    147      * Getter method for "message" tag attribute. (Mapping set in associated
    148      * BeanInfo class.)
    149      */
    150     public String getMessageExpr() {
    151         return (messageExpr);
    152     }
    153
    154     /**
    155      * Setter method for "id" tag attribute. (Mapping set in associated
    156      * BeanInfo class.)
    157      */
    158     public void setIdExpr(String idExpr) {
    159         this.idExpr = idExpr;
    160     }
    161
    162     /**
    163      * Setter method for "bundle" tag attribute. (Mapping set in associated
    164      * BeanInfo class.)
    165      */
    166     public void setBundleExpr(String bundleExpr) {
    167         this.bundleExpr = bundleExpr;
    168     }
    169
    170     /**
    171      * Setter method for "locale" tag attribute. (Mapping set in associated
    172      * BeanInfo class.)
    173      */
    174     public void setLocaleExpr(String localeExpr) {
    175         this.localeExpr = localeExpr;
    176     }
    177
    178     /**
    179      * Setter method for "name" tag attribute. (Mapping set in associated
    180      * BeanInfo class.)
    181      */
    182     public void setNameExpr(String nameExpr) {
    183         this.nameExpr = nameExpr;
    184     }
    185
    186     /**
    187      * Setter method for "property" tag attribute. (Mapping set in associated
    188      * BeanInfo class.)
    189      */
    190     public void setPropertyExpr(String propertyExpr) {
    191         this.propertyExpr = propertyExpr;
    192     }
    193
    194     /**
    195      * Setter method for "header" tag attribute. (Mapping set in associated
    196      * BeanInfo class.)
    197      */
    198     public void setHeaderExpr(String headerExpr) {
    199         this.headerExpr = headerExpr;
    200     }
    201
    202     /**
    203      * Setter method for "footer" tag attribute. (Mapping set in associated
    204      * BeanInfo class.)
    205      */
    206     public void setFooterExpr(String footerExpr) {
    207         this.footerExpr = footerExpr;
    208     }
    209
    210     /**
    211      * Setter method for "message" tag attribute. (Mapping set in associated
    212      * BeanInfo class.)
    213      */
    214     public void setMessageExpr(String messageExpr) {
    215         this.messageExpr = messageExpr;
    216     }
    217
    218     /**
    219      * Resets attribute values for tag reuse.
    220      */
    221     public void release() {
    222         super.release();
    223         setIdExpr(null);
    224         setBundleExpr(null);
    225         setLocaleExpr(null);
    226         setNameExpr(null);
    227         setPropertyExpr(null);
    228         setHeaderExpr(null);
    229         setFooterExpr(null);
    230         setMessageExpr(null);
    231     }
    232
    233     /**
    234      * Process the start tag.
    235      *
    236      * @throws JspException if a JSP exception has occurred
    237      */
    238     public int doStartTag() throws JspException {
    239         evaluateExpressions();
    240
    241         return (super.doStartTag());
    242     }
    243
    244     /**
    245      * Processes all attribute values which use the JSTL expression evaluation
    246      * engine to determine their values.
    247      *
    248      * @throws JspException if a JSP exception has occurred
    249      */
    250     private void evaluateExpressions()
    251         throws JspException {
    252         String string = null;
    253
    254         if ((string =
    255                 EvalHelper.evalString("id", getIdExpr(), this, pageContext)) != null) {
    256             setId(string);
    257         }
    258
    259         if ((string =
    260                 EvalHelper.evalString("bundle", getBundleExpr(), this,
    261                     pageContext)) != null) {
    262             setBundle(string);
    263         }
    264
    265         if ((string =
    266                 EvalHelper.evalString("locale", getLocaleExpr(), this,
    267                     pageContext)) != null) {
    268             setLocale(string);
    269         }
    270
    271         if ((string =
    272                 EvalHelper.evalString("name", getNameExpr(), this, pageContext)) != null) {
    273             setName(string);
    274         }
    275
    276         if ((string =
    277                 EvalHelper.evalString("property", getPropertyExpr(), this,
    278                     pageContext)) != null) {
    279             setProperty(string);
    280         }
    281
    282         if ((string =
    283                 EvalHelper.evalString("header", getHeaderExpr(), this,
    284                     pageContext)) != null) {
    285             setHeader(string);
    286         }
    287
    288         if ((string =
    289                 EvalHelper.evalString("footer", getFooterExpr(), this,
    290                     pageContext)) != null) {
    291             setFooter(string);
    292         }
    293
    294         if ((string =
    295                 EvalHelper.evalString("message", getMessageExpr(), this,
    296                     pageContext)) != null) {
    297             setMessage(string);
    298         }
    299     }
    300 }