如何在Spring中验证@RequestParam以使用控制器和验证器

时间:2014-06-16 23:12:45

标签: java spring validation spring-mvc

我是一个Spring新手,必须在Spring控制器中处理一个方法,但是我想在某种程度上改进代码。

该方法部分在Spring中实现,需要验证用户在页面上输入的内容。这有两个阶段:第一阶段是检查用户的输入是否为数字,然后检查数据库以确保用户存在输入的值。

方法是:

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(@RequestParam("id") String id,
                    SessionStatus sessionStatus,
                    Model model) {                
    Integer personId = null;
    try {            
        personId = Integer.parseInt(id);
    }
    catch(NumberFormatException e) {                           
        model.addAttribute("message", "Please enter a valid ID.");
        sessionStatus.setComplete();            
        return "errorPage";
    }  

    Person person = null;          
    person = personService.get(personId);           
    if (person == null) {                    
        model.addAttribute("message", "Please enter a valid ID.");
        sessionStatus.setComplete();              
        return "errorPage";
    }        
    model.addAttribute("person", person);
    sessionStatus.setComplete();   
    return "userPage";        
}    

我想在这里使用Spring Validator,但我告诉他们这些是用于业务对象的表单验证而不是简单的变量。

或者如果无法使用Validator,我可以使用Spring自己的消息来向用户显示页面上的错误吗?

所以我会在表格上有这样的东西:

 <form:form action="/login" method="get"> 
        <form:input path="id" />
        <form:errors path="id" />                             
        <input type="submit" value="Submit">
        <input type="Reset" value="Reset">              
 </form:form>   

有人可以建议如何改进这种方法吗?

1 个答案:

答案 0 :(得分:0)

添加验证的步骤。

  1. 编写验证器类并实现Validator类为orerridden方法提供实现

    import org.springframework.validation.Errors;
    import org.springframework.validation.ValidationUtils;
    import org.springframework.validation.Validator;
    
    public class LoginValidator implements Validator{
    
     @override
     public void validate(Object login, Errors err ){
         //Write your logic to follow up your Login validation
         ValidationUtils.rejectIfEmptyOrWhitespace(errors, "username", "field.required", "UserName Required field");
         ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "field.required", "Password Required field");
     }
    
    }
    
  2. 然后在* -servlet.xml中创建一个bean条目

  3. 在JSP中添加错误逻辑

  4. 由于 帕