1 /* 2 * $Id$ 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 22 23 package org.apache.struts.webapp.example2; 24 25 26 import jakarta.servlet.http.HttpServletRequest; 27 import org.apache.struts.action.ActionMessage; 28 import org.apache.struts.action.ActionErrors; 29 import org.apache.struts.action.ActionMapping; 30 import org.apache.struts.validator.ValidatorForm; 31 32 33 /** 34 * Form bean for the user registration page. This form has the following 35 * fields, with default values in square brackets: 36 * <ul> 37 * <li><b>action</b> - The maintenance action we are performing (Create, 38 * Delete, or Edit). 39 * <li><b>fromAddress</b> - The EMAIL address of the sender, to be included 40 * on sent messages. [REQUIRED] 41 * <li><b>fullName</b> - The full name of the sender, to be included on 42 * sent messages. [REQUIRED] 43 * <li><b>password</b> - The password used by this user to log on. 44 * <li><b>password2</b> - The confirmation password, which must match 45 * the password when changing or setting. 46 * <li><b>replyToAddress</b> - The "Reply-To" address to be included on 47 * sent messages. [Same as from address] 48 * <li><b>username</b> - The registered username, which must be unique. 49 * [REQUIRED] 50 * </ul> 51 * 52 * @author Craig R. McClanahan 53 * @version $Rev$ $Date$ 54 */ 55 56 public final class RegistrationForm extends ValidatorForm { 57 private static final long serialVersionUID = -5478229369238095131L; 58 59 60 // ----------------------------------------------------- Instance Variables 61 62 63 /** 64 * The maintenance action we are performing (Create or Edit). 65 */ 66 private String action = "Create"; 67 68 69 /** 70 * The from address. 71 */ 72 private String fromAddress = null; 73 74 75 /** 76 * The full name. 77 */ 78 private String fullName = null; 79 80 81 /** 82 * The password. 83 */ 84 private String password = null; 85 86 87 /** 88 * The confirmation password. 89 */ 90 private String password2 = null; 91 92 93 /** 94 * The reply to address. 95 */ 96 private String replyToAddress = null; 97 98 99 100 /** 101 * The username. 102 */ 103 private String username = null; 104 105 106 // ----------------------------------------------------------- Properties 107 108 109 /** 110 * Return the maintenance action. 111 */ 112 public String getAction() { 113 114 return (this.action); 115 116 } 117 118 119 /** 120 * Set the maintenance action. 121 * 122 * @param action The new maintenance action. 123 */ 124 public void setAction(String action) { 125 126 this.action = action; 127 128 } 129 130 131 /** 132 * Return the from address. 133 */ 134 public String getFromAddress() { 135 136 return (this.fromAddress); 137 138 } 139 140 141 /** 142 * Set the from address. 143 * 144 * @param fromAddress The new from address 145 */ 146 public void setFromAddress(String fromAddress) { 147 148 this.fromAddress = fromAddress; 149 150 } 151 152 153 /** 154 * Return the full name. 155 */ 156 public String getFullName() { 157 158 return (this.fullName); 159 160 } 161 162 163 /** 164 * Set the full name. 165 * 166 * @param fullName The new full name 167 */ 168 public void setFullName(String fullName) { 169 170 this.fullName = fullName; 171 172 } 173 174 175 /** 176 * Return the password. 177 */ 178 public String getPassword() { 179 180 return (this.password); 181 182 } 183 184 185 /** 186 * Set the password. 187 * 188 * @param password The new password 189 */ 190 public void setPassword(String password) { 191 192 this.password = password; 193 194 } 195 196 197 /** 198 * Return the confirmation password. 199 */ 200 public String getPassword2() { 201 202 return (this.password2); 203 204 } 205 206 207 /** 208 * Set the confirmation password. 209 * 210 * @param password2 The new confirmation password 211 */ 212 public void setPassword2(String password2) { 213 214 this.password2 = password2; 215 216 } 217 218 219 /** 220 * Return the reply to address. 221 */ 222 public String getReplyToAddress() { 223 224 return (this.replyToAddress); 225 226 } 227 228 229 /** 230 * Set the reply to address. 231 * 232 * @param replyToAddress The new reply to address 233 */ 234 public void setReplyToAddress(String replyToAddress) { 235 236 this.replyToAddress = replyToAddress; 237 238 } 239 240 241 /** 242 * Return the username. 243 */ 244 public String getUsername() { 245 246 return (this.username); 247 248 } 249 250 251 /** 252 * Set the username. 253 * 254 * @param username The new username 255 */ 256 public void setUsername(String username) { 257 258 this.username = username; 259 260 } 261 262 263 // --------------------------------------------------------- Public Methods 264 265 266 /** 267 * Reset all properties to their default values. 268 * 269 * @param mapping The mapping used to select this instance 270 * @param request The servlet request we are processing 271 */ 272 public void reset(ActionMapping mapping, HttpServletRequest request) { 273 274 this.action = "Create"; 275 this.fromAddress = null; 276 this.fullName = null; 277 this.password = null; 278 this.password2 = null; 279 this.replyToAddress = null; 280 this.username = null; 281 282 } 283 284 285 /** 286 * Validate the properties that have been set from this HTTP request, 287 * and return an <code>ActionErrors</code> object that encapsulates any 288 * validation errors that have been found. If no errors are found, return 289 * <code>null</code> or an <code>ActionErrors</code> object with no 290 * recorded error messages. 291 * 292 * @param mapping The mapping used to select this instance 293 * @param request The servlet request we are processing 294 */ 295 public ActionErrors validate(ActionMapping mapping, 296 HttpServletRequest request) { 297 298 // Perform validator framework validations 299 ActionErrors errors = super.validate(mapping, request); 300 301 // Only need crossfield validations here 302 if (((password == null) && (password2 != null)) || 303 ((password != null) && (password2 == null)) || 304 ((password != null) && (password2 != null) && 305 !password.equals(password2))) { 306 errors.add("password2", 307 new ActionMessage("error.password.match")); 308 } 309 return errors; 310 311 } 312 313 314 }