mirror of
https://github.com/apache/struts.git
synced 2026-08-11 01:27:14 +00:00
WW-3952 Extends existing logic to handle credit card validation
This commit is contained in:
+39
@@ -122,6 +122,14 @@ public class AnnotationValidationConfigurationBuilder {
|
||||
result.add(temp);
|
||||
}
|
||||
}
|
||||
// Process CrediCardValidator
|
||||
else if (a instanceof CreditCardValidator) {
|
||||
CreditCardValidator v = (CreditCardValidator) a;
|
||||
ValidatorConfig temp = processCreditCardValidatorAnnotation(v, fieldName, methodName);
|
||||
if (temp != null) {
|
||||
result.add(temp);
|
||||
}
|
||||
}
|
||||
// Process FieldExpressionValidator
|
||||
else if (a instanceof FieldExpressionValidator) {
|
||||
FieldExpressionValidator v = (FieldExpressionValidator) a;
|
||||
@@ -263,6 +271,15 @@ public class AnnotationValidationConfigurationBuilder {
|
||||
}
|
||||
}
|
||||
}
|
||||
CreditCardValidator[] ccv = validations.creditCards();
|
||||
if (ccv != null) {
|
||||
for (CreditCardValidator v : ccv) {
|
||||
ValidatorConfig temp = processCreditCardValidatorAnnotation(v, fieldName, methodName);
|
||||
if (temp != null) {
|
||||
result.add(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
FieldExpressionValidator[] fev = validations.fieldExpressions();
|
||||
if (fev != null) {
|
||||
for (FieldExpressionValidator v : fev) {
|
||||
@@ -786,6 +803,28 @@ public class AnnotationValidationConfigurationBuilder {
|
||||
.build();
|
||||
}
|
||||
|
||||
private ValidatorConfig processCreditCardValidatorAnnotation(CreditCardValidator v, String fieldName, String methodName) {
|
||||
String validatorType = "creditcard";
|
||||
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
|
||||
if (fieldName != null) {
|
||||
params.put("fieldName", fieldName);
|
||||
} else if (StringUtils.isNotEmpty(v.fieldName())) {
|
||||
params.put("fieldName", v.fieldName());
|
||||
}
|
||||
|
||||
validatorFactory.lookupRegisteredValidatorType(validatorType);
|
||||
return new ValidatorConfig.Builder(validatorType)
|
||||
.addParams(params)
|
||||
.addParam("methodName", methodName)
|
||||
.shortCircuit(v.shortCircuit())
|
||||
.defaultMessage(v.message())
|
||||
.messageKey(v.key())
|
||||
.messageParams(v.messageParams())
|
||||
.build();
|
||||
}
|
||||
|
||||
private ValidatorConfig processDateRangeFieldValidatorAnnotation(DateRangeFieldValidator v, String fieldName, String methodName) {
|
||||
String validatorType = "date";
|
||||
|
||||
|
||||
@@ -167,6 +167,8 @@ public @interface Validations {
|
||||
|
||||
EmailValidator[] emails() default {};
|
||||
|
||||
CreditCardValidator[] creditCards() default {};
|
||||
|
||||
FieldExpressionValidator[] fieldExpressions() default {};
|
||||
|
||||
IntRangeFieldValidator[] intRangeFields() default {};
|
||||
|
||||
+8
-3
@@ -148,9 +148,14 @@ public class RegexFieldValidator extends FieldValidatorSupport {
|
||||
compare = compare.trim();
|
||||
}
|
||||
|
||||
Matcher matcher = pattern.matcher(compare);
|
||||
if (!matcher.matches()) {
|
||||
addFieldError(fieldName, object);
|
||||
try {
|
||||
setCurrentValue(compare);
|
||||
Matcher matcher = pattern.matcher(compare);
|
||||
if (!matcher.matches()) {
|
||||
addFieldError(fieldName, object);
|
||||
}
|
||||
} finally {
|
||||
setCurrentValue(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.opensymphony.xwork2.validator;
|
||||
import com.opensymphony.xwork2.ActionSupport;
|
||||
import com.opensymphony.xwork2.validator.annotations.ConditionalVisitorFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.ConversionErrorFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.CreditCardValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.CustomValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.DateRangeFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.DoubleRangeFieldValidator;
|
||||
@@ -45,6 +46,8 @@ public class AnnotationValidationAction extends ActionSupport {
|
||||
messageParams = {"one", "two", "three"})
|
||||
@EmailValidator(message = "Foo isn't a valid e-mail!", fieldName = "foo", key = "email.key",
|
||||
messageParams = {"one", "two", "three"}, shortCircuit = true)
|
||||
@CreditCardValidator(message = "Foo isn't a valid credit card!", fieldName = "foo", key = "creditCard.key",
|
||||
messageParams = {"one", "two", "three"}, shortCircuit = true)
|
||||
@ExpressionValidator(expression = "true", message = "Is not true!", key = "expression.key",
|
||||
messageParams = {"one", "two", "three"}, shortCircuit = true)
|
||||
@FieldExpressionValidator(expression = "true", fieldName = "foo", key = "fieldexpression.key", message = "It is not true!",
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
|
||||
<validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
|
||||
<validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
|
||||
<validator name="creditcard" class="com.opensymphony.xwork2.validator.validators.CreditCardValidator"/>
|
||||
<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
|
||||
<validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
|
||||
<validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
|
||||
|
||||
Reference in New Issue
Block a user