在DAO验证之后,Spring-MVC表单验证突出显示输入字段

时间:2017-04-25 18:04:55

标签: java spring validation spring-mvc

我正在将Struts 1.3项目转换为Spring。我使用弹簧形式而不是struts形式字段。

我在struts中使用了ActionErrors来使用errorStyleClass属性突出显示该字段。

同样,在spring中,cssErrorClass可用。但是,如何在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;
}

1 个答案:

答案 0 :(得分:0)

您需要使用Java Bean验证框架JSR 303注释您的实体,如此

public class Model{
  @NotEmpty
  String filed1;

  @Range(min = 1, max = 150)
  int filed2;

  ....
}

@Valid添加到您的控制器,就像这样

public class MyController {

public String controllerMethod(@Valid Customer customer, BindingResult result) {
    if (result.hasErrors()) {
        // process error
    } else {
        // process without errors
    }
}

您可以找到更多示例herehere

编辑:

如果您想根据代码中的自定义验证步骤注册更多错误,可以在rejectValue()实例中使用BindingResult方法,如下所示:

bindingResult.rejectValue("usernameField", "error code", "Not Found username message");