Spring MVC:没有@ModelAttribute /"命令对象"的简单验证

mar*_*osh 3 validation spring-mvc

如何在不提供命令对象的情况下验证简单表单(一个输入字段)并显示错误?我的简单形式是:

    <form id="verify" action="check.html">
        <input name="code"/>
        <form:errors path="code" />         
        <input type="submit" value="ok" />      
    </form>
Run Code Online (Sandbox Code Playgroud)

控制器处理方法如下.我需要生成错误消息并显示代替form:errors

@RequestMapping("/check.html")
public String check(@RequestParam(value="code") String code) {
    if(!isGood(code)) {
        // How to bind some error messages for `code` ?
        return "fail"; // fail page
    }
    return "ok";
}
Run Code Online (Sandbox Code Playgroud)

axt*_*avt 6

简而言之,<form:errors>没有<form:form>和其他@ModelAttribute相关的功能不起作用.如果您想要最简单的解决方案,可以将错误消息导出为普通模型属性,而不是使用<form:errors>:

@RequestMapping("/check.html")
public String check(@RequestParam(value="code") String code, ModelMap model) {
    if(!isGood(code)) {
        model.put("codeError", "...")
        return "fail"; // fail page
    }
    return "ok";
}
Run Code Online (Sandbox Code Playgroud)
    <form id="verify" action="check.html">
        <input name="code"/>
        <c:out value = "${codeError}" />            
        <input type="submit" value="ok" />      
    </form>
Run Code Online (Sandbox Code Playgroud)