Spécifications: mise en veille prolongée validateur [5.2.4.Final], le printemps contexte [4.2.2.RELEASE]groupe validation Spécification des à utiliser pour un haricot
Je suis en train de faire la solution décrite here travail au dessous de. Mais il n'y a pas de violations de contraintes rencontrées & les choses passent juste bien. Pourquoi?
J'ai deux haricots, un parent, un autre enfant. La définition de l'enfant est comme ci-dessous
package code;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@Service("SampleBean")
@Validated
public class SampleBean {
@NotNull(message= "value can not be null" , groups = Group1.class)
// @NotNull(message= "value can not be null")
private Integer value;
@NotNull(message= "value1 can not be null" , groups = Group2.class)
// @NotNull(message= "value can not be null")
private Integer value1;
public Integer getValue() {
return value;
}
public void setValue(@NotNull
Integer value) {
this.value = value;
}
public Integer getValue1() {
return value1;
}
public void setValue1(Integer value1) {
this.value1 = value1;
}
}
La définition de haricot Parent est comme ci-dessous:
package code;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@Service("SampleBeanParent")
@Validated
public class SampleBeanParent {
public void acceptChildBean(@NotNull(message = "child cannot be null")
// @Valid
@Validated(Group1.class)
SampleBean childBean) throws NoSuchMethodException, SecurityException{
System.out.println("successfully finished");
}
}
La classe de test est aussi
package code;
import java.util.ArrayList;
import java.util.List;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Test {
public static void main(String[] args) throws NoSuchMethodException, SecurityException{
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);
SampleBean sampleBean = (SampleBean) context.getBean("SampleBean");
try{
SampleBeanParent parent = (SampleBeanParent) context.getBean("SampleBeanParent");
parent.acceptChildBean(sampleBean);
}
catch(ConstraintViolationException e){
System.out.println("there were validation errors");
}
}
}
Soit dit en passant, j'ai installé niveau de ressort approprié haricots comme ci-dessous & cela fonctionne bien sans groupes (j'ai commenté les lignes de validation dans le code ci-dessus sans groupes pour le cas de travail). Donc ce n'est pas le problème :)
package code;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
@Configuration
@ComponentScan(basePackageClasses = {SampleBean.class})
public class SpringConfiguration {
@Bean(name = "validator")
public LocalValidatorFactoryBean initValidatorFactory(){
return new LocalValidatorFactoryBean();
}
@Bean
public MethodValidationPostProcessor initValidationPostProcessor(){
return new MethodValidationPostProcessor();
}
}
et que voulez-vous dire par" ça fonctionne bien sans groupes "? J'ai essayé de reproduire votre scénario, et supprimé le code de groupe SampleBean et SampleBeanParent, mais cela a abouti à "terminé avec succès" aussi – hammerfest
J'ai ajouté des instructions de commentaire pour montrer le cas normal de toutes les contraintes appartenant à défaut où cela fonctionne bien. Il suffit de les décommenter et de commenter les lignes liées au groupe – nikel