Spring实战第五版第二章字段校验返回视图报错解决及javax.validation完整pom依赖

在Spring实战第五版第二章中,2.3节探讨了校验表单输入的问题。遇到POST请求后返回视图时字段校验错误,原因可能是model数据丢失或javax.validation依赖未正确导入。解决方案包括使用redirect或更新model,同时确保完整引入javax.validation的依赖包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring实战第五版第二章

2.3 校验表单输入

在编写"/design"页面post处理逻辑时,按照书本上直接'return "design"; '方式,会报如下错误:

Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'design' available as request attribute
	at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153)
	at org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:903)
	at org.thymeleaf.spring5.context.webmvc.SpringWebMvcThymeleafRequestContext.getBindStatus(SpringWebMvcThymeleafRequestContext.java:227)
	at org.thymeleaf.spring5.util.FieldUtils.getBindStatusFromParsedExpression(FieldUtils.java:306)
	at org.thymeleaf.spring5.util.FieldUtils.getBindStatus(FieldUtils.java:253)
	at org.thymeleaf.spring5.util.FieldUtils.getBindStatus(FieldUtils.java:227)
	at org.thymeleaf.spring5.processor.AbstractSpringFieldTagProcessor.doProcess(AbstractSpringFieldTagProcessor.java:174)
	at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74)
	... 63 more

 个人猜测post请求时,model数据模型中的数据被清空,导致重新请求视图时,绑定的“design”对象为空,在渲染输入框中“design”对象属性时报错。可采用redirect方式重新请求“/design”的get方法,或重新设置model。

   @PostMapping
    public String processDesign(@Valid Taco design, Errors error,Model model){
        //若校验不生效,则检查valid依赖包是否引入完整
        if(error.hasErrors()){
            model.addAttribute("design",new Taco());
            return "design";//直接请求视图报错,可能因为model中的map.design为空
//            return "redirect:design";

        }
        log.info("processing design :"+design);
        return "redirect:/orders/current";//type=Not Found, status=404
//        return "/orders/current";//直接请求视图,未编辑网页时报错模板不存在
    }

 通过传入model的方式解决报错后,请求校验不通过时前后页面变化如下图,原“ingredients”信息不再存在,进一步证实model中数据未在视图中保存。

 

 

ps:字段校验不生效,需检查javax.validation依赖包是否完整导入

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.4.1.Final</version>
</dependency>
<dependency>
    <groupId>org.jboss.logging</groupId>
    <artifactId>jboss-logging</artifactId>
    <version>3.3.0.Final</version>
</dependency>
<dependency>
    <groupId>com.fasterxml</groupId>
    <artifactId>classmate</artifactId>
    <version>1.3.3</version>
</dependency>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值