protected void processFieldValidation(FacesContext facesContext,
UIComponent uiComponent,
Object convertedObject,
PropertyInformation propertyInformation)
{
ValidationStrategy validationStrategy;
SkipValidationEvaluator skipValidationEvaluator = ExtValContext.getContext().getSkipValidationEvaluator();
for (MetaDataEntry entry : propertyInformation.getMetaDataEntries())
{
validationStrategy = ExtValUtils.getValidationStrategyForMetaData(entry.getKey());
if (validationStrategy != null &&
isValidationStrategyCompatibleWithValue(validationStrategy, convertedObject))
{
if(skipValidationEvaluator.skipValidation(facesContext, uiComponent, validationStrategy, entry))
{
if(logger.isTraceEnabled())
{
logger.trace("skip validation of " + entry.getValue() +
" with " + validationStrategy.getClass().getName());
}
//don't break maybe there are constraints which don't support the skip-mechanism
continue;
}
if(logger.isTraceEnabled())
{
logger.trace("validate " + entry.getValue() + " with " + validationStrategy.getClass().getName());
}
try
{
if(entry.getValue() instanceof Annotation)
{
if(!ExtValUtils.executeLocalBeforeValidationInterceptors(
facesContext, uiComponent, convertedObject,
PropertyInformation.class.getName(), propertyInformation,
entry.getValue(Annotation.class)))
{
continue;
}
}
/*
* validation
*/
validationStrategy.validate(facesContext, uiComponent, entry, convertedObject);
}
finally
{
if(entry.getValue() instanceof Annotation)
{