0

我正在使用带有休眠功能的 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  />
4

1 回答 1

0

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

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

我假设你得到的异常是一个IllegalStateException(如果你发布它会有所帮助)来自一个ErrorsMethodArgumentResolver和状态

Errors/BindingResult 参数应在模型属性、@RequestBody 或它们适用的 @RequestPart 参数之后立即声明:[...]

于 2013-09-04T18:35:34.447 回答