Java Spring MVC表单验证突出显示DAO验证后的输入字段

Java Spring MVC表单验证突出显示DAO验证后的输入字段,java,spring,validation,spring-mvc,Java,Spring,Validation,Spring Mvc,我正在将Struts 1.3项目转换为Spring。我使用的不是struts表单字段,而是spring表单 我在struts中使用ActionErrors来突出显示使用errorStyleClass属性的字段 类似地,在spring中,cssErrorClass也可用。但是,在dao验证之后如何使用它呢 @RequestMapping(value = "/login", method = RequestMethod.POST) public String login(@ModelAttribut

我正在将Struts 1.3项目转换为Spring。我使用的不是struts表单字段,而是spring表单

我在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;
}

您需要使用JavaBean验证框架
JSR303
对实体进行注释,如下所示

public class Model{
  @NotEmpty
  String filed1;

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

  ....
}
public class MyController {

public String controllerMethod(@Valid Customer customer, BindingResult result) {
    if (result.hasErrors()) {
        // process error
    } else {
        // process without errors
    }
}
并将
@Valid
添加到控制器中,如下所示

public class Model{
  @NotEmpty
  String filed1;

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

  ....
}
public class MyController {

public String controllerMethod(@Valid Customer customer, BindingResult result) {
    if (result.hasErrors()) {
        // process error
    } else {
        // process without errors
    }
}
你可以找到更多关于它的例子

编辑:

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

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

你看过这个问题吗?是的。我见过这个例子。但是,它说,没有定义验证方法。如果要创建验证方法,那么内部的实现应该是什么?您好。我的问题是,在另一部分中,我要调用dao并验证数据库中的登录凭据。如果详细信息不正确,您将如何再次在else部分(在db调用之后)实现与result.hasErrors()相同的场景?Hi Friend<代码>结果.拒绝值(“用户名字段”,“错误代码”,“未找到用户名消息”)工作正常。