春季3中的<form:errors>标签未显示错误</form:errors>

时间:2011-07-27 19:40:00

标签: java model-view-controller spring spring-mvc validation

我正在使用表单验证的Spring 3 MVC应用程序。验证工作在服务器端,但即使我返回BindingResult,标记在验证失败时也不会显示消息。

控制器方法:


  @RequestMapping(value = "server/{serverId}/save", method = RequestMethod.POST)
  public ModelAndView saveServer( @PathVariable long serverId,
                                  @Valid ServerEditor serverEditor, 
                                  BindingResult result){

        AdminSystemServer server = adminService.loadServer(serverId);
        if (!result.hasErrors()){
            server.setServerName(serverEditor.getServerName());
            server.setServerUrl(serverEditor.getServerUrl());
            adminService.save(server);
        }

        mv.setViewName(".layout.servers.manage.server");
        mv.addObject("server", server);
        mv.addObject("result", result);
        return mv;
    }

表格jsp

<form:form commandName="serverEditor" action="/admin/app/servers/manage/system/save">
<span class="tableRow">
    <label for="serverName">System Name</label>
    <form:input path="serverName" class="required" /><br />
</span>

<span class="tableRow">
    <form:errors cssClass="errors" path="serverName" />
    </span>

</form:form>

我知道验证工作正常,因为我逐步调试并查看绑定结果中的错误,但消息永远不会出现。

有人有什么想法吗?

3 个答案:

答案 0 :(得分:0)

尝试添加

@ModelAttribute("commandName"),

作为@PathVariable long serverId,

之后的方法参数

你也可以发布更多的jsp吗?

答案 1 :(得分:0)

在您的示例代码中,您显示错误&#34; systemName &#34;绑定bean具有属性&#34; serverName &#34; ...

答案 2 :(得分:0)

原来我的问题,有人早些时候问过,但我认为没有连接,是在类级别上声明了ModelAndView。这可以防止绑定结果正确插入模型中。