You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Rudy De Busscher (JIRA)" <de...@myfaces.apache.org> on 2010/02/01 15:01:51 UTC
[jira] Issue Comment Edited: (EXTVAL-82) Add the
EmptyValueAwareValidationStrategy annotation to the Length and Pattern
Annotations
[ https://issues.apache.org/jira/browse/EXTVAL-82?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12806744#action_12806744 ]
Rudy De Busscher edited comment on EXTVAL-82 at 2/1/10 2:01 PM:
----------------------------------------------------------------
The changed behaviour of @Length and @Pattern is indeed something that needs to be documented. In the case a project upgrades to version x.x.3, the required check they used to have implicitly, is gone.
The following is, I think, the easiest solution without major changes (no additional constraint or custom validation strategy required) in the codebase of the project that did an upgrade.
public class CompatiblePropertyValidationInterceptor extends PropertyValidationInterceptor {
@Override
protected boolean isValidationStrategyCompatibleWithValue(
ValidationStrategy validationStrategy, Object value) {
if (validationStrategy instanceof LengthStrategy) {
return value != null;
}
if (validationStrategy instanceof PatternStrategy) {
return value != null;
}
return super.isValidationStrategyCompatibleWithValue(validationStrategy, value);
}
}
and this class is registered in a custom startup listener as follows
ExtValContext.getContext().denyRendererInterceptor(PropertyValidationInterceptor.class);
ExtValContext.getContext().registerRendererInterceptor(new CompatiblePropertyValidationInterceptor());
The functionality placed in the isValidationStrategyCompatibleWithValue method is the same as putting an EmptyValueAwareValidationStrategy on the 2 strategies.
regards
Rudy
was (Author: rdebusscher):
The changed behaviour of @Length and @Pattern is indeed something that needs to be documented. In the case a project upgrades to version x.x.3, the required check they used to have implicitly, is gone.
The following is, I think, the easiest solution without major changes (no additional constraint or custom validation strategy required) in the codebase of the project that did an upgrade.
public class CompatiblePropertyValidationInterceptor extends PropertyValidationInterceptor {
@Override
protected boolean isValidationStrategyCompatibleWithValue(
ValidationStrategy validationStrategy, Object value) {
if (validationStrategy instanceof LengthStrategy) {
return value != null;
}
if (validationStrategy instanceof PatternStrategy) {
return value != null;
}
return super.isValidationStrategyCompatibleWithValue(validationStrategy, value);
}
}
and this class is registered in a custom startup listener as follows
ExtValContext.getContext().denyRendererInterceptor(ValidationInterceptor.class);
ExtValContext.getContext().registerRendererInterceptor(new CompatiblePropertyValidationInterceptor());
The functionality placed in the isValidationStrategyCompatibleWithValue method is the same as putting an EmptyValueAwareValidationStrategy on the 2 strategies.
regards
Rudy
> Add the EmptyValueAwareValidationStrategy annotation to the Length and Pattern Annotations
> ------------------------------------------------------------------------------------------
>
> Key: EXTVAL-82
> URL: https://issues.apache.org/jira/browse/EXTVAL-82
> Project: MyFaces Extensions Validator
> Issue Type: Improvement
> Components: Property Validation
> Affects Versions: 1.2.3-SNAPSHOT, 2.0.3-SNAPSHOT, 1.1.3-SNAPSHOT
> Reporter: Rudy De Busscher
> Priority: Minor
>
> Adding the EmptyValueAwareValidationStrategy allows in JSF 2.0 that Length and Pattern validations are triggered (with the javax.faces.VALIDATE_EMPTY_FIELDS parameter set).
> They will cause a validation error with an empty string (Length annotation with minimum set or Pattern) so the Required annotation is no longer needed.
> Tested it out with ExtVal 2.0.3-SNAPSHOT and Myfaces 2.0.0-SNAPHOT (of 21/01) and it works as expected.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.