Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/apache/struts/validator/ValidatorForm.java


1   /*
2    * $Id: ValidatorForm.java 54929 2004-10-16 16:38:42Z germuska $ 
3    *
4    * Copyright 2000-2004 The Apache Software Foundation.
5    * 
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    * 
10   *      http://www.apache.org/licenses/LICENSE-2.0
11   * 
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  
19  package org.apache.struts.validator;
20  
21  import java.io.Serializable;
22  import java.util.Map;
23  
24  import javax.servlet.ServletContext;
25  import javax.servlet.http.HttpServletRequest;
26  
27  import org.apache.commons.logging.Log;
28  import org.apache.commons.logging.LogFactory;
29  import org.apache.commons.validator.Validator;
30  import org.apache.commons.validator.ValidatorException;
31  import org.apache.commons.validator.ValidatorResults;
32  import org.apache.struts.action.ActionErrors;
33  import org.apache.struts.action.ActionForm;
34  import org.apache.struts.action.ActionMapping;
35  
36  /**
37   * <p>This class extends <strong>ActionForm</strong> and provides
38   * basic field validation based on an XML file.  The key passed into the
39   * validator is the action element's 'name' attribute from the
40   * struts-config.xml which should match the form element's name attribute
41   * in the validation.xml.</p>
42   *
43   * <ul><li>See <code>ValidatorPlugin</code> definition in struts-config.xml
44   * for validation rules.</li></ul>
45   *
46   * @version $Rev: 54929 $ $Date: 2004-10-16 09:38:42 -0700 (Sat, 16 Oct 2004) $
47   * @see org.apache.struts.action.ActionForm
48   * @since Struts 1.1
49   */
50  public class ValidatorForm extends ActionForm implements Serializable {
51  
52      /**
53       * Commons Logging instance.
54       */
55      private static Log log = LogFactory.getLog(ValidatorForm.class);
56  
57      /**
58       * The results returned from the validation performed
59       * by the <code>Validator</code>.
60       */
61      protected ValidatorResults validatorResults = null;
62  
63      /**
64       * Used to indicate the current page of a multi-page form.
65       */
66      protected int page = 0;
67  
68      /**
69       * Gets page.
70       * @return page number
71       */
72      public int getPage() {
73          return page;
74      }
75  
76      /**
77       * Sets page.
78       * @param page page number
79       */
80      public void setPage(int page) {
81          this.page = page;
82      }
83  
84      /**
85       * Validate the properties that have been set from this HTTP request,
86       * and return an <code>ActionErrors</code> object that encapsulates any
87       * validation errors that have been found.  If no errors are found, return
88       * <code>null</code> or an <code>ActionErrors</code> object with no
89       * recorded error messages.
90       *
91       * @param mapping The mapping used to select this instance
92       * @param request The servlet request we are processing
93       * @return  <code>ActionErrors</code> object that encapsulates any  validation errors
94  
95       */
96      public ActionErrors validate(ActionMapping mapping,
97                                   HttpServletRequest request) {
98  
99          ServletContext application = getServlet().getServletContext();
100         ActionErrors errors = new ActionErrors();
101 
102         String validationKey = getValidationKey(mapping, request);
103 
104         Validator validator = Resources.initValidator(validationKey,
105                              this,
106                              application, request,
107                              errors, page);
108 
109         try {
110             validatorResults = validator.validate();
111         } catch (ValidatorException e) {
112             log.error(e.getMessage(), e);
113         }
114 
115         return errors;
116     }
117 
118     /**
119      * Returns the Validation key.
120      *
121      * @param mapping The mapping used to select this instance
122      * @param request The servlet request we are processing
123      * @return validation key - the form element's name in this case
124      */
125     public String getValidationKey(ActionMapping mapping,
126                                    HttpServletRequest request) {
127 
128         return mapping.getAttribute();
129     }
130 
131     /**
132      * Reset all properties to their default values.
133      *
134      * @param mapping The mapping used to select this instance
135      * @param request The servlet request we are processing
136      */
137     public void reset(ActionMapping mapping, HttpServletRequest request) {
138         super.reset(mapping, request);
139         page = 0;
140         validatorResults = null;
141     }
142 
143     /**
144      * Get results of the validation performed by the
145      * <code>Validator</code>.
146      * @return results of the validation
147      */
148     public ValidatorResults getValidatorResults() {
149         return validatorResults;
150     }
151 
152     /**
153      * Set results of the validation performed by the
154      * <code>Validator</code>.
155      * @param validatorResults results of validation
156      */
157     public void setValidatorResults(ValidatorResults validatorResults) {
158         this.validatorResults = validatorResults;
159     }
160 
161     /**
162      * Returns a <code>Map</code> of values returned
163      * from any validation that returns a value other than
164      * <code>null</code> or <code>Boolean</code> with the
165      * key the full property path of the field.
166      * @return  <code>Map</code> of non-null values
167      */
168     public Map getResultValueMap() {
169         return (validatorResults != null ? validatorResults.getResultValueMap() : null);
170     }
171 }