View Javadoc

    1   /*
    2    * $Id: ELJavascriptValidatorTag.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.JavascriptValidatorTag;
    24  import org.apache.strutsel.taglib.utils.EvalHelper;
    25
    26  import javax.servlet.jsp.JspException;
    27
    28  /**
    29   * Custom tag that generates JavaScript for client side validation based on
    30   * the validation rules loaded by the <code>ValidatorPlugIn</code> defined in
    31   * the struts-config.xml file. <p> This class is a subclass of the class
    32   * <code>org.apache.struts.taglib.html.JavascriptValidatorTag</code> which
    33   * provides most of the described functionality.  This subclass allows all
    34   * attribute values to be specified as expressions utilizing the JavaServer
    35   * Pages Standard Library expression language.
    36   *
    37   * @version $Rev: 471754 $
    38   */
    39  public class ELJavascriptValidatorTag extends JavascriptValidatorTag {
    40      /**
    41       * Instance variable mapped to "cdata" tag attribute. (Mapping set in
    42       * associated BeanInfo class.)
    43       */
    44      private String cdataExpr;
    45
    46      /**
    47       * Instance variable mapped to "dynamicJavascript" tag attribute. (Mapping
    48       * set in associated BeanInfo class.)
    49       */
    50      private String dynamicJavascriptExpr;
    51
    52      /**
    53       * Instance variable mapped to "formName" tag attribute. (Mapping set in
    54       * associated BeanInfo class.)
    55       */
    56      private String formNameExpr;
    57
    58      /**
    59       * Instance variable mapped to "method" tag attribute. (Mapping set in
    60       * associated BeanInfo class.)
    61       */
    62      private String methodExpr;
    63
    64      /**
    65       * Instance variable mapped to "page" tag attribute. (Mapping set in
    66       * associated BeanInfo class.)
    67       */
    68      private String pageExpr;
    69
    70      /**
    71       * Instance variable mapped to "scriptLanguage" tag attribute. (Mapping
    72       * set in associated BeanInfo class.)
    73       */
    74      private String scriptLanguageExpr;
    75
    76      /**
    77       * Instance variable mapped to "src" tag attribute. (Mapping set in
    78       * associated BeanInfo class.)
    79       */
    80      private String srcExpr;
    81
    82      /**
    83       * Instance variable mapped to "staticJavascript" tag attribute. (Mapping
    84       * set in associated BeanInfo class.)
    85       */
    86      private String staticJavascriptExpr;
    87
    88      /**
    89       * Instance variable mapped to "htmlComment" tag attribute. (Mapping set
    90       * in associated BeanInfo class.)
    91       */
    92      private String htmlCommentExpr;
    93
    94      /**
    95       * Instance variable mapped to "bundle" tag attribute. (Mapping set in
    96       * associated BeanInfo class.)
    97       */
    98      private String bundleExpr;
    99
    100     /**
    101      * Getter method for "cdata" tag attribute. (Mapping set in associated
    102      * BeanInfo class.)
    103      */
    104     public String getCdataExpr() {
    105         return (cdataExpr);
    106     }
    107
    108     /**
    109      * Getter method for "dynamicJavascript" tag attribute. (Mapping set in
    110      * associated BeanInfo class.)
    111      */
    112     public String getDynamicJavascriptExpr() {
    113         return (dynamicJavascriptExpr);
    114     }
    115
    116     /**
    117      * Getter method for "formName" tag attribute. (Mapping set in associated
    118      * BeanInfo class.)
    119      */
    120     public String getFormNameExpr() {
    121         return (formNameExpr);
    122     }
    123
    124     /**
    125      * Getter method for "method" tag attribute. (Mapping set in associated
    126      * BeanInfo class.)
    127      */
    128     public String getMethodExpr() {
    129         return (methodExpr);
    130     }
    131
    132     /**
    133      * Getter method for "page" tag attribute. (Mapping set in associated
    134      * BeanInfo class.)
    135      */
    136     public String getPageExpr() {
    137         return (pageExpr);
    138     }
    139
    140     /**
    141      * Getter method for "scriptLanguage" tag attribute. (Mapping set in
    142      * associated BeanInfo class.)
    143      */
    144     public String getScriptLanguageExpr() {
    145         return (scriptLanguageExpr);
    146     }
    147
    148     /**
    149      * Getter method for "src" tag attribute. (Mapping set in associated
    150      * BeanInfo class.)
    151      */
    152     public String getSrcExpr() {
    153         return (srcExpr);
    154     }
    155
    156     /**
    157      * Getter method for "staticJavascript" tag attribute. (Mapping set in
    158      * associated BeanInfo class.)
    159      */
    160     public String getStaticJavascriptExpr() {
    161         return (staticJavascriptExpr);
    162     }
    163
    164     /**
    165      * Getter method for "htmlComment" tag attribute. (Mapping set in
    166      * associated BeanInfo class.)
    167      */
    168     public String getHtmlCommentExpr() {
    169         return (htmlCommentExpr);
    170     }
    171
    172     /**
    173      * Getter method for "bundle" tag attribute. (Mapping set in associated
    174      * BeanInfo class.)
    175      */
    176     public String getBundleExpr() {
    177         return (bundleExpr);
    178     }
    179
    180     /**
    181      * Setter method for "cdata" tag attribute. (Mapping set in associated
    182      * BeanInfo class.)
    183      */
    184     public void setCdataExpr(String cdataExpr) {
    185         this.cdataExpr = cdataExpr;
    186     }
    187
    188     /**
    189      * Setter method for "dynamicJavascript" tag attribute. (Mapping set in
    190      * associated BeanInfo class.)
    191      */
    192     public void setDynamicJavascriptExpr(String dynamicJavascriptExpr) {
    193         this.dynamicJavascriptExpr = dynamicJavascriptExpr;
    194     }
    195
    196     /**
    197      * Setter method for "formName" tag attribute. (Mapping set in associated
    198      * BeanInfo class.)
    199      */
    200     public void setFormNameExpr(String formNameExpr) {
    201         this.formNameExpr = formNameExpr;
    202     }
    203
    204     /**
    205      * Setter method for "method" tag attribute. (Mapping set in associated
    206      * BeanInfo class.)
    207      */
    208     public void setMethodExpr(String methodExpr) {
    209         this.methodExpr = methodExpr;
    210     }
    211
    212     /**
    213      * Setter method for "page" tag attribute. (Mapping set in associated
    214      * BeanInfo class.)
    215      */
    216     public void setPageExpr(String pageExpr) {
    217         this.pageExpr = pageExpr;
    218     }
    219
    220     /**
    221      * Setter method for "scriptLanguage" tag attribute. (Mapping set in
    222      * associated BeanInfo class.)
    223      */
    224     public void setScriptLanguageExpr(String scriptLanguageExpr) {
    225         this.scriptLanguageExpr = scriptLanguageExpr;
    226     }
    227
    228     /**
    229      * Setter method for "src" tag attribute. (Mapping set in associated
    230      * BeanInfo class.)
    231      */
    232     public void setSrcExpr(String srcExpr) {
    233         this.srcExpr = srcExpr;
    234     }
    235
    236     /**
    237      * Setter method for "staticJavascript" tag attribute. (Mapping set in
    238      * associated BeanInfo class.)
    239      */
    240     public void setStaticJavascriptExpr(String staticJavascriptExpr) {
    241         this.staticJavascriptExpr = staticJavascriptExpr;
    242     }
    243
    244     /**
    245      * Setter method for "htmlComment" tag attribute. (Mapping set in
    246      * associated BeanInfo class.)
    247      */
    248     public void setHtmlCommentExpr(String htmlCommentExpr) {
    249         this.htmlCommentExpr = htmlCommentExpr;
    250     }
    251
    252     /**
    253      * Setter method for "bundle" tag attribute. (Mapping set in associated
    254      * BeanInfo class.)
    255      */
    256     public void setBundleExpr(String bundleExpr) {
    257         this.bundleExpr = bundleExpr;
    258     }
    259
    260     /**
    261      * Resets attribute values for tag reuse.
    262      */
    263     public void release() {
    264         super.release();
    265         setCdataExpr(null);
    266         setDynamicJavascriptExpr(null);
    267         setFormNameExpr(null);
    268         setMethodExpr(null);
    269         setPageExpr(null);
    270         setScriptLanguageExpr(null);
    271         setSrcExpr(null);
    272         setStaticJavascriptExpr(null);
    273         setHtmlCommentExpr(null);
    274         setBundleExpr(null);
    275     }
    276
    277     /**
    278      * Process the start tag.
    279      *
    280      * @throws JspException if a JSP exception has occurred
    281      */
    282     public int doStartTag() throws JspException {
    283         evaluateExpressions();
    284
    285         return (super.doStartTag());
    286     }
    287
    288     /**
    289      * Processes all attribute values which use the JSTL expression evaluation
    290      * engine to determine their values.
    291      *
    292      * @throws JspException if a JSP exception has occurred
    293      */
    294     private void evaluateExpressions()
    295         throws JspException {
    296         String string = null;
    297         Integer integer = null;
    298         Boolean bool = null;
    299
    300         if ((string =
    301                 EvalHelper.evalString("cdata", getCdataExpr(), this, pageContext)) != null) {
    302             setCdata(string);
    303         }
    304
    305         if ((string =
    306                 EvalHelper.evalString("dynamicJavascript",
    307                     getDynamicJavascriptExpr(), this, pageContext)) != null) {
    308             setDynamicJavascript(string);
    309         }
    310
    311         if ((string =
    312                 EvalHelper.evalString("formName", getFormNameExpr(), this,
    313                     pageContext)) != null) {
    314             setFormName(string);
    315         }
    316
    317         if ((string =
    318                 EvalHelper.evalString("method", getMethodExpr(), this,
    319                     pageContext)) != null) {
    320             setMethod(string);
    321         }
    322
    323         if ((integer =
    324                 EvalHelper.evalInteger("page", getPageExpr(), this, pageContext)) != null) {
    325             setPage(integer.intValue());
    326         }
    327
    328         if ((bool =
    329                 EvalHelper.evalBoolean("scriptLanguage",
    330                     getScriptLanguageExpr(), this, pageContext)) != null) {
    331             setScriptLanguage(bool.booleanValue());
    332         }
    333
    334         if ((string =
    335                 EvalHelper.evalString("src", getSrcExpr(), this, pageContext)) != null) {
    336             setSrc(string);
    337         }
    338
    339         if ((string =
    340                 EvalHelper.evalString("staticJavascript",
    341                     getStaticJavascriptExpr(), this, pageContext)) != null) {
    342             setStaticJavascript(string);
    343         }
    344
    345         if ((string =
    346                 EvalHelper.evalString("htmlComment", getHtmlCommentExpr(),
    347                     this, pageContext)) != null) {
    348             setHtmlComment(string);
    349         }
    350
    351         if ((string =
    352                 EvalHelper.evalString("bundle", getBundleExpr(), this,
    353                     pageContext)) != null) {
    354             setBundle(string);
    355         }
    356     }
    357 }