Spring walidacja - Service jest nullem

0

Witam
Pisze właśnie własną walidacje i mam problem, bo Service w metodzie isValid jest nullem nie wiem dlaczego.

CustomerController

    @RequestMapping(value = "/create", method = RequestMethod.POST)
    public String saveNewCustomer(@ModelAttribute("customer") CustomerData customer, BindingResult result, HttpServletRequest request) {
        customerService.createItem(customer);
        return "redirect:/customers";
    }

CustomerData

@Entity
@Table(name = "Customer")
public class CustomerData {

    @Id
    @Column(name = "Id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @UniqueCustomerLogin
    @Column(name = "Firstname")
    private String firstname;
}

UniqueCustomerLogin

@Target({METHOD, FIELD, ANNOTATION_TYPE})
@Retention(RUNTIME)
@Constraint(validatedBy = UniqueProductCodeValidator.class)
@Documented
public @interface UniqueCustomerLogin {
    String message() default "{labels.error.unique.code}";

    Class<?>[] groups() default {};

    public abstract Class<? extends Payload>[] payload() default {};
}

UniqueCustomerLoginValidator

public class UniqueCustomerLoginValidator implements ConstraintValidator<UniqueCustomerLogin, String> {

    @Autowired
    CustomerService customerService;

    public void initialize(UniqueCustomerLogin uniqueCustomerLogin) {

    }

    public boolean isValid(String value, ConstraintValidatorContext context) {
        try {
            customerService;
        } catch (ApplicationException e) {
            return true;
        }
        return false;
    }
}

DispatcherServlet-context.xml

 <mvc:annotation-driven enable-matrix-variables="true" validator="validator"/>

    <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <property name="validationMessageSource" ref="messageSource"/>
    </bean>

Jeszcze dodam że w CustomerController Service działa okej i tylko tutaj coś nie działa. Sprawdzałem tez inne services w tym isValid i kazdy jest null.

0

Dodaj @Component adnotację nad klasą validatora.

0

ten walidator @Constraint(validatedBy = UniqueProductCodeValidator.class) jest raczej kreowany przez podsystem od walidacji wątpie aby @Component pomogło

0

@Component nie pomogło, już próbowałem

0

Spróbuj tak ja tu napisali :
http://stackoverflow.com/questions/27526620/dependency-injection-in-jsr-303-constraint-validator-with-spring-fails
Tylko tutaj te beany są konfigurowane w javie, więc klasa, w której będziesz to pisał, musi mieć adnotację @Configuration

0

Dobra naprawiłem brakowało mi @Valid w argumentach CustomerController

(@ModelAttribute("customer") @Valid CustomerData customer)

Tylko teraz mam problem bo obiekt CustomerData ma w sobie obiekt UserData i metoda isValid wykonuje się dwa razy najpierw waliduje CusotmerData i wtedy Service nie jest nullem, niestety później waliduje UserData i juz jest nullem jak to naprawić. Nie mogę do niego dopisać @Valid bo nie przesyłam w argumentach CustomerController obiektu UserData

1 użytkowników online, w tym zalogowanych: 0, gości: 1