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.