Estou convertendo o projeto Struts 1.3 para Spring. Em vez de campos de formulário struts, estou usando o formulário spring.
Eu usei ActionErrors em struts para destacar o campo usando o atributo errorStyleClass.
Da mesma forma, na primavera, o cssErrorClass está disponível. Mas, como usá-lo após a validação 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;
}
Respostas:
0 para resposta № 1Você precisa anotar suas entidades usando a estrutura de validação do Java Bean JSR 303
, como isso
public class Model{
@NotEmpty
String filed1;
@Range(min = 1, max = 150)
int filed2;
....
}
E adicione @Valid
para o seu controlador, assim
public class MyController {
public String controllerMethod(@Valid Customer customer, BindingResult result) {
if (result.hasErrors()) {
// process error
} else {
// process without errors
}
}
Você pode encontrar mais exemplos para isso Aqui e Aqui
EDITAR:
Se você desejar registrar mais erros com base nas etapas de validação personalizadas no código, poderá usar rejectValue()
método no BindingResult
exemplo, assim:
bindingResult.rejectValue("usernameField", "error code", "Not Found username message");