Details
-
Type:
Improvement
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: Release 1.3.2
-
Fix Version/s: Release 1.5
-
Component/s: Validation
-
Labels:None
Description
I have the following nested property validation:
@ValidateNestedProperties ({
@Validate(field="name", required=true),
@Validate(field="description", required=true),
@Validate(field="phenoDataType.dataTypeId", required=true),
@Validate(field="phenoUsageType", required=true)
})
private PhenoAttributeType selectedTrait;
This results in:
Please fix the following errors:
Selected Trait Description is a required field
Selected Trait Name is a required field
Selected Trait Pheno Data Type Data Type Id is a required field
I can map the fields in the resource file (thanks Tim), but that is limited if two different pages call the same attribute two different things. Also, the Validate annotation is where things are described, so it would be nice to be able to give a replacement string or a localized string right there.
I envision this looking like:
@ValidateNestedProperties ({
@Validate(field="name", required=true, alias="Name"),
@Validate(field="description", required=true, alias="Description"),
@Validate(field="phenoDataType.dataTypeId", required=true, alias="Data Type"),
@Validate(field="phenoUsageType", required=true, alias="Used For")
})
private PhenoAttributeType selectedTrait;
This would result in:
Please fix the following errors:
Description is a required field
Name is a required field
Data Type Id is a required field
This matches my labels on the page. Another alternative would be to match the name to the label for this attribute on the page. The nice thing there is that any changes to the label would automatically be propagated to the error message without having to change the annotation.
If you really need to call the same attribute two different things on two different pages, you could have two different action bean classes, or two different url bindings, and use a different prefix in the resource bundle to distinguish the two...no?