これはカスタムバリデータであり、ゲッター/セッターがありますcountryCode
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>
Address オブジェクトには zip とcountryCode
. 国に基づいて郵便番号を検証したい。上記のコードをデバッグするとcountryCode
、値が${address.country}
.
国のプロパティ値を取得するにはどうすればよいですか?