这是自定义验证器,具有 getter/settercountryCode
public void validate(Object object) throws ValidationException {
String fieldName = getFieldName();
Object zipObj = this.getFieldValue(fieldName, object);
String country = getCountryCode();
String zipCode = (String) zipObj;
if (zipCode == null || ("".equals(zipCode))) {
return;
}
boolean valid = false;
try {
if ((Country.DEFAULT).equalsIgnoreCase(country)) {
valid = Pattern.matches(US_ZIP_FORMAT, zipCode);
int testZip = Integer.parseInt(zipCode.substring(0, 5));
if (testZip == 0) {
valid = false;
}
} else if ((Country.CANADA).equalsIgnoreCase(country)) {
valid = Pattern.matches(CANADA_ZIP_FORMAT, zipCode);
} else {
valid = Pattern.matches(OTHER_ZIP_FORMAT, zipCode);
}
} catch (Exception e) {
logger.error("Cannot validate zip code (" + zipCode + ") for country ("
+ country + ").");
valid = false;
}
if (!valid) {
addFieldError(fieldName, object);
}
}
如何将国家代码传递回自定义验证器。这是我的ActionClass-validation.xml
<validators>
<field name="address.zip">
<field-validator type="zipValidator">
<param name="countryCode">${address.country}</param>
<message key="errors.zip.invalid" />
</field-validator>
</field>
</validators>
地址对象有 zip 和countryCode
. 我想根据国家/地区验证 zip。当我调试上面的代码时,countryCode
有值${address.country}
.
如何获得国家财产价值?