Spring MVC 3 – >validation

我有一个Spring MVC应用程序,它使用AJAX / JSON与前端进行通信,我在前端有一个带有HTML的Web应用程序。

为了向数据库添加元素,我在后端系统中执行此操作:

@RequestMapping(value="add/", method=RequestMethod.POST) public @ResponseBody SerializePerson addProject(@RequestBody Person person) { Person p = this.personService.addPerson(person); return new SerializePerson(p.getId(), p.getName(), p.getEmail()); } 

但现在我遇到了问题(这是一个非常简单的例子),有人可以创建一个没有名称的项目,所以name =“”和一个无效的电子邮件地址。 我的问题是,我想validation后端系统中的字段。

所以我在这里找到了一个Spring MVC展示: https : //src.springsource.org/svn/spring-samples/mvc-showcase/src/main/java/org/springframework/samples/mvc/validation/

他们这样做:

 @RequestMapping("/validate") public @ResponseBody String validate(@Valid JavaBean bean, BindingResult result) { if (result.hasErrors()) { return "Object has validation errors"; } else { return "No errors"; } } 

那么,这是最好的方法吗? 所以我必须做两个步骤:

  1. validationPerson对象(如果没有错误发生,转到步骤2,否则向用户显示错误消息)
  2. 将Person对象写入datbase

是不是可以一步完成这两个步骤? 我怎样才能将Person POST对象从前端放到后端的“validate”方法中,看看哪个字段失败(名称或电子邮件),因为只告诉“对象有validation错误”并不是那么好:-)?

最好的祝福。

我在这个例子中显示了它: http : //blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/

 @RequestMapping(method=RequestMethod.POST) public @ResponseBody Map create(@RequestBody Account account, HttpServletResponse response) { Set> failures = validator.validate(account); if (!failures.isEmpty()) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); return validationMessages(failures); } else { accounts.put(account.assignId(), account); return Collections.singletonMap("id", account.getId()); } }