我正在使用表单验证的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>
我知道验证工作正常,因为我逐步调试并查看绑定结果中的错误,但消息永远不会出现。
有人有什么想法吗?
答案 0 :(得分:0)
尝试添加
@ModelAttribute("commandName"),
作为@PathVariable long serverId,
你也可以发布更多的jsp吗?
答案 1 :(得分:0)
在您的示例代码中,您显示错误&#34; systemName &#34;绑定bean具有属性&#34; serverName &#34; ...
答案 2 :(得分:0)
原来我的问题,有人早些时候问过,但我认为没有连接,是在类级别上声明了ModelAndView。这可以防止绑定结果正确插入模型中。