0
我有一個類級驗證,像這樣:如何將類級別驗證映射到特定字段?
@PostalCodeValidForCountry
public class Address
{
...
private String postalCode;
private String country;
}
驗證實現像這樣:
@Override
public boolean isValid(Address address, ConstraintValidatorContext constraintContext)
{
String postalCode = address.getPostalCode();
String country = address.getCountry();
String regex = null;
if (null == country || Address.COUNTRY_USA.equals(country))
{
regex = "^[0-9]{5}$";
}
else if (Address.COUNTRY_CANADA.equals(country))
{
regex = "^[A-Za-z][0-9][A-Za-z] [0-9][A-Za-z][0-9]$";
}
Pattern postalPattern = Pattern.compile(regex);
Matcher matcher = postalPattern.matcher(postalCode);
if (matcher.matches())
{
return true;
}
return false;
}
目前,當我得到的BindingResult從失敗的驗證結果的誤差是ObjectError上與地址的objectName。但是,我想將此錯誤映射到postalCode字段。因此,我不想報告一個ObjectError,而是想報告一個FieldError,其中包含一個postalCode的fieldName。
是否有可能在自定義驗證本身內做到這一點?
這看起來很有希望,最初的問題隨着我們設計的變化而消失:我們現在有一個DTO對象,我們進行驗證,允許我們在更具體/粒度級別而不是在較低庫中指定驗證本身。我將此標記爲答案,因爲這是我正在尋找的答案類型。 – Noremac