Spring mvc和Hibernate验证器,错误

时间:2013-09-04 18:33:13

标签: java hibernate spring-mvc validation

我正在使用带有hibernate的Spring 3来验证控制器。

当我的表单正确时,它会将我重定向到我想要的页面,但是当验证有问题时,它会中断并将我发送到“未找到”页面。我认为我的结构是正确的,所以我不明白。

@RequestMapping(params = "guardaNuevo", method = RequestMethod.POST)
public String guardaSimCard(  @ModelAttribute("validator")@Valid CatalogoSimCardValidator validator, HttpServletRequest request,Model model,BindingResult result) {
    System.out.println("--------------------------------");

    model.addAttribute("CatalogoSimCardValidator", new CatalogoSimCardValidator());
    System.out.println(result);
    System.out.println("no errores");
}

我的验证器如下所示:

public class CatalogoSimCardValidator   {

    @NotNull 
    private int idSimCard;
    @NotEmpty (message="La descripción no puede venir vacía")
    private String descripcionSimCard="";
    @NotNull
    @NumberFormat(style=Style.CURRENCY)
    private double precio;

    @NumberFormat(style=Style.NUMBER)
    private int version=0;
    @NotEmpty
    private String descripcionVers;

显然我并没有错过:

<context:component-scan base-package="com.telcel.sds.crm.dlyscrm.precios.web"/>
<context:annotation-config/>
<mvc:annotation-driven  />

1 个答案:

答案 0 :(得分:0)

更改您的方法签名,将BindingResult参数放在at @Valid参数旁边

public String guardaSimCard(@ModelAttribute("validator") @Valid CatalogoSimCardValidator validator, BindingResult result, HttpServletRequest request, Model model) {

我认为你得到的例外是IllegalStateException(如果你发布它会有帮助)来自ErrorsMethodArgumentResolver并说明

  

预计会声明Errors / BindingResult参数   紧跟在model属性之后的@RequestBody或者   它们适用的@RequestPart参数:[...]