@Override
public void validate (final FacesContext context, final UIComponent component, final Object value) throws ValidatorException {
+ System.out.println("validate: value=" + value); //NOI18N
// The required field
String[] requiredFields = {"emailAddress", "emailAddressRepeat", "resendEmailAddress"}; //NOI18N
- // Check if allowNull is given, otherwise assume "not allowed"
- Boolean allowEmpty = (component.getAttributes().containsKey("allowEmpty") ? Boolean.parseBoolean((String) component.getAttributes().get("allowEmpty")) : Boolean.FALSE); //NOI18N
+ // Default is to reject empty email address fields
+ Boolean allowEmptyEmail = Boolean.FALSE;
+
+ // Is attribute "allowEmptyEmail" set?
+ if (component.getAttributes().containsKey("allowEmptyEmail")) { //NOI18N
+ // Get attribute
+ Object attribute = component.getAttributes().get("allowEmptyEmail"); //NOI18N
+ System.out.println("attribute=" + attribute); //NOI18N
+
+ // Make sure, it is Boolean as no String is accepted anymore
+ if (!(attribute instanceof String)) {
+ // Not valid attribute, please use "true" or "false" (default)
+ throw new IllegalArgumentException("allowEmptyEmail must be of type String. Please use \"true\" or \"false\" for f:attribute value."); //NOI18N
+ }
+
+ // Securely cast it
+ allowEmptyEmail = Boolean.parseBoolean((String) attribute);
+ }
// Pre-validation (example: not null, not a string, empty string ...)
- super.preValidate(context, component, value, requiredFields, allowEmpty);
+ super.preValidate(context, component, value, requiredFields, allowEmptyEmail);
// Is the email address empty and allowed?
- if (null == value && allowEmpty) {
+ if (null == value && allowEmptyEmail) {
// Then accept this here
return;
} else if (null == value) {