3

我正在一个 spring mvc web 应用程序中工作,我正在尝试person使用 Spring 的 Validator 验证一个 db 对象,并尝试将验证器的结果以 JSP 形式显示为form:errors path="". 我在控制器中有服务器端方法:

@RequestMapping( value="/find", method = RequestMethod.GET )
public ModelAndView search(@ModelAttribute("Person") Person p,BindingResult result){

     Person person2 = personDao.get( p.getId() );
     ModelAndView mav = new ModelAndView("templates/person");

     PersonValidator personValidator = new PersonValidator();
     personValidator.validate(person2, result);
     mav.addObject("person",person2);
     mav.addObject("errors",result.getFieldErrors());

     return mav;
}

我有 JSP 代码:

<form:form commandName="person" >
    <form:input path="personEmail" /> 
    <form:errors path="personEmail"  element="div" />
</form:form>

如果我明确输入错误消息,它会起作用${errors.personEmail }

但 ,

<form:errors path="personEmail"  element="div" />

不起作用。

你能告诉我这里有什么问题吗?


请尝试缩小变量名称。

你有 @Model Attribute("Person") ,其中命令被命名为 Person ,而不是在你的 jsp 中你有 person 和 personValidator.validate(person, result); 你有人。您应该验证 BindingResult => Person p 之前的同一个对象,或者您必须像这样显式地为特定对象创建绑定结果

BindingResult errors = new BeanPropertyBindingResult(person,"person");
validate(Person person, Errors errors);
4

2 回答 2

1

我做了以下更改,现在解决了。:D

@RequestMapping( value="/find", method = RequestMethod.GET )
    public String search(@ModelAttribute("Person") Person p,BindingResult result,ModelMap model){

         Person person2 = personDao.get( p.getId() );
         PersonValidator personValidator = new PersonValidator();
         Errors errors = new BeanPropertyBindingResult(person2, "person");
         personValidator.validate(person2, errors);
         model.addAttribute("person",person2);
         model.addAttribute("errors",errors);

         return "templates/person";
 }
于 2012-06-11T14:11:36.243 回答
0

请尝试缩小变量名称。

你有 @Model Attribute("Person") ,其中命令被命名为 Person ,而不是在你的 jsp 中你有 person 和 personValidator.validate(person, result); 你有人。您应该验证 BindingResult => Person p 之前的同一个对象,或者您必须像这样显式地为特定对象创建绑定结果

BindingResult errors = new BeanPropertyBindingResult(person,"person");
validate(Person person, Errors errors);
于 2012-06-11T14:07:08.873 回答