在我們的項目中,我們採取了稍微不同的方法。我們也在使用Spring 3.1,並且我們都使用驗證和自定義驗證來註釋這兩個bean。我們的方法可能適用於或不適用於您的場景,因爲我不確定您在遷移到Spring 3.1之前最初使用的方法,但在此處。
當我們需要自定義驗證時,而不是擴展LocalValidatorFactoryBean,我們實現了org.springframework.validation.Validator類。因此,這個實現執行自己的自定義代碼並調用Spring的默認驗證,該驗證通過自動裝入我們的自定義驗證器的bean公開。下面是驗證碼:
@Component("myValidator")
public class MyValidator implements Validator {
@Autowired
private Validator springValidator;
@Override
public boolean supports(Class<?> clazz) {
return MyObject.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object object, Errors errors) {
MyObject myObject = (MyObject) object;
// invoke spring default validator so validation annotations are processed
springValidator.validate(myObject, errors);
// custom validation
....
,我們在我們的Spring XML文件中聲明下面bean:
<bean id="springValidator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
通過以上的實施,需要調用驗證課程將通過調用這樣做validator.validate(對象對象,錯誤錯誤)。再次,這就是爲什麼我不確定在我們的項目中採用的方法適用於您的方法,因爲我不確定您使用的是相同的驗證方法(對象,錯誤)。
無論如何,希望它有幫助。
@無效的註釋是否執行相同的rt? – shazinltc
我們使用註釋來標記應該驗證的表單部分,但是我們想要添加自己的驗證的額外處理,這就是爲什麼我們要繼承LocalValidatorFactoryBean的原因。 –
我確實有同樣的問題:http://forum.springsource.org/showthread.php?134759-Extending-JSR-303-validation-quot-validate-quot-is-not-invoked-by-Valid-annotation什麼你選擇的解決方案? –