/*
* Copyright 2011-2012 Blazebit
*/
package com.blazebit.blazefaces.validator;
import java.util.HashSet;
import java.util.Set;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.ValidatorException;
/**
*
* @author Christian Beikov
*/
@FacesValidator("onSubmitValidator")
public class OnSubmitValidator extends AbstractDelegatingValidator {
private static final String PERFORM_VALIDATION = "performValidation";
private static final String REQUIRED = "onSubmitRequired";
private static final String FALSE = "false";
@Override
public void validate(FacesContext context, UIComponent component, Object value) throws ValidatorException {
if (!FALSE.equals(context.getExternalContext().getRequestParameterMap().get(PERFORM_VALIDATION))) {
Set<FacesMessage> messages = new HashSet<FacesMessage>();
if (Boolean.TRUE.equals(component.getAttributes().get(REQUIRED))) {
try {
lookup(context, "javax.faces.Required").validate(context, component, value);
} catch (ValidatorException e) {
if(e.getFacesMessages() != null){
messages.addAll(e.getFacesMessages());
} else {
messages.add(e.getFacesMessage());
}
}
}
if (component.getAttributes().get(VALIDATOR_ID) != null) {
try {
super.validate(context, component, value);
} catch (ValidatorException e) {
if(e.getFacesMessages() != null){
messages.addAll(e.getFacesMessages());
} else {
messages.add(e.getFacesMessage());
}
}
}
// if there are any messages - throw validation exception
if (!messages.isEmpty()) {
throw new ValidatorException(messages);
}
}
}
}