我正在使用带有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 />
答案 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参数:[...]