Konwertuję projekt Struts 1.3 na Spring. Zamiast pól formularza rozpórki, używam formy Spring.
Użyłem ActionErrors w rozpórkach, aby podświetlić pole za pomocą atrybutu errorStyleClass.
Podobnie wiosną dostępny jest cssErrorClass. Ale jak z niego korzystać po sprawdzeniu poprawności dao?
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@ModelAttribute("login") @Validated Login login, BindingResult result, Model model) {
if (result.hasErrors()) {
//THIS VALIDATION DONE BY ANNOTATION AND HIGHLIGHTING THE FIELD
//USING "cssErrorClass"
return HOMEPAGE;
}
boolean checkAuthentication = authService.checkAuthentication(login);
if(!checkAuthentication){
// HOW TO SET THE ERROR HERE?
// Is there any way to set the error like
// error.setMessage("userId","invalid.data");
// so that, is it possible to display error message by
// highlighting the fields using "cssErrorClass"?
}
return HOMEPAGE;
}
Odpowiedzi:
0 dla odpowiedzi № 1Musisz opatrzyć adnotacje swoimi jednostkami za pomocą środowiska Java Bean Validation JSR 303
, lubię to
public class Model{
@NotEmpty
String filed1;
@Range(min = 1, max = 150)
int filed2;
....
}
I dodaj @Valid
do twojego kontrolera, tak jak to
public class MyController {
public String controllerMethod(@Valid Customer customer, BindingResult result) {
if (result.hasErrors()) {
// process error
} else {
// process without errors
}
}
Możesz znaleźć więcej przykładów tutaj i tutaj
EDYTOWAĆ:
Jeśli chcesz zarejestrować więcej błędów na podstawie niestandardowych kroków sprawdzania poprawności w kodzie, możesz użyć rejectValue()
metoda w BindingResult
przykład, jak poniżej:
bindingResult.rejectValue("usernameField", "error code", "Not Found username message");