我有一个我正在使用的地址库(内部),其中包含一个Address类。 Address类已经在postalCode上包含@NotEmpty验证。
在我的应用程序中,我需要将约束扩展到城市和州/省。 我已经看到了通过xml配置它,然后重建验证工厂以及添加自定义约束的建议。
我尝试后者没有用(@StrictAddress是我的自定义约束):
public addressDTO saveAddress(@StrictAddress @RequestBody Address address)
使用验证器的isValid方法,如下所示:
public boolean isValid(Address address, ConstraintValidatorContext constraintContext)
{
if (null == address.getStreet() || address.getStreet().trim().isEmpty())
{
return false;
}
else if (null == address.getCity() || address.getCity().trim().isEmpty())
{
return false;
}
else if (null == address.getStateProv() || address.getStateProv().trim().isEmpty())
{
return false;
}
else if (null == address.getPostalCode() || address.getPostalCode().trim().isEmpty())
{
return false;
}
else if (null == address.getCountry() || address.getCountry().trim().isEmpty())
{
return false;
}
else
{
return true;
}
}
使用此设置运行时,我没有得到任何已完成验证的指示(它应该已失败)。当我用标准的@Valid替换@StrictAddress时,我在postalCode上得到了原始的验证错误。
我错过了什么?这是解决这个问题的好方法吗?