按照书中的例子,一直做到第3.1章使用JDBC读写数据时,在提交设计的taco表单时,报了如下的异常信息:

Failed to convert property value of type java.lang.String to required type java.util.List for property ingredients; nested exception is java.lang.IllegalStateException: Cannot convert value of type java.lang.String to required type tacos.Ingredient for property ingredients[0]: no matching editors or conversion strategy found 

异常的字面意思就是字符串的ingredients[0]不能转换成tacos.Ingredient,表单中的ingredients是字符串当然不能自动的转换成tacos.Ingredient对象,不过spring中是可以自定义转换器来进行转换的。

添加如下的转换器,将String转换成tacos.Ingredient就可以了:

package tacos.web;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;import tacos.Ingredient;
import tacos.data.IngredientRepository;@Component
public class IngredientByIdConverter implements Converter<String, Ingredient> {private IngredientRepository ingredientRepo;@Autowiredpublic IngredientByIdConverter(IngredientRepository ingredientRepo) {this.ingredientRepo = ingredientRepo;}@Overridepublic Ingredient convert(String id) {return ingredientRepo.findById(id);}}

不添加上面的转换器,即使在第3.2章使用Spring Data JPA持久化数据,提交的taco表单也不会报错,因为tacos.Ingredient已经进行对象到数据库的映射,即使不配置如上的转换器 ,也能成功的提交表单。在这种情况下,spring在遇到要要将String转换成tacos.Ingredient时,会认为这个字符串就是他的主键,会根据这个字符串id查找到该对象,并将其加入List中。

转载于:https://www.cnblogs.com/zhangfengxian/p/10706765.html

【spring实战第五版遇到的坑】3.1中的例子报错相关推荐

  1. Spring实战第五版源码

    Spring实战第五版源码 链接:https://pan.quark.cn/s/11a451b1aa84 提取码:uzGW

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

    Spring实战第五版第二章 2.3 校验表单输入 在编写"/design"页面post处理逻辑时,按照书本上直接'return "design"; '方式,会 ...

  3. Spring实战第五版观后感之第一章

    spring所做的一切都是在简化开发,所以今天我们就来说说我所了解到的第一章的内容 一.什么是Spring? Spring的核心是提供了一个容器,通常称为Spring应用上下文,它们会创建和管理应用组 ...

  4. Spring实战(第3版)

    <Spring实战(第3版) > 基本信息 原书名:Spring in Actiong(third edition) 作者: (美)Craig Walls 译者: 耿渊 张卫滨 出版社:人 ...

  5. 《spring实战第四版》的读书笔记

    <spring实战第四版>的读书笔记 1 概述 <Spring实战第四版>描述了Spring4架构的设计,看完了以后,最大感觉是Spring的IOC与aop理念实在是太强大了, ...

  6. Spring实战(第四版)

    Spring实战(第四版) 链接:https://pan.baidu.com/s/1PhnJqOsQPz5hqe-zxkqPOg 提取码:eu15 复制这段内容后打开百度网盘手机App,操作更方便哦

  7. Spring实战(第4版)

    Spring实战第四版,在线阅读地址:https://potoyang.gitbook.io/spring-in-action-v4/,根据 pdf 整理完成.

  8. 【go实战系列五】 go1.19.2与pkg中error如何wrap与unwrap Errors | 将error进行wrap向上处理思想 | pkg/errors

    历史go篇章 [go实战系列一]开篇:在循环中重新定义变量(redefining for loop variable semantics) [go实战系列二]关于切片的基本操作 copy sort a ...

  9. Spring 实战 第4版 读书笔记

    第一部分:Spring的核心 1.第一章:Spring之旅 1.1.简化Java开发 创建Spring的主要目的是用来替代更加重量级的企业级Java技术,尤其是EJB.相对EJB来说,Spring提供 ...

  10. 高翔视觉SLAM十四讲(第二版)各种软件、库安装的以及报错解决方法

    目录 前言 系统版本 下载高翔视觉SLAM十四讲第二版的源代码 一.安装 Vim 二.安装 g++ 三.安装 KDevelop 以及汉化 1.安装 2.汉化 四.安装 Eigen 库 五.安装 Pan ...

最新文章

  1. 把别人的Tcl/Tk代码加入到Go语言里12 游戏5 画图案?
  2. 虚无主义还是怀疑论?
  3. python职业发展方向_测试的职业发展方向有哪些?该如何规划?
  4. 宝宝的成长脚印6/15
  5. 网站压力测试软件(Apache JMeter)2.13 官方版 Error: Unable to access jarfile ApacheJMeter.jar
  6. 联想小新air14笔记本黑屏_联想小新air14锐龙版测评,谈谈它的好和坏
  7. C# 控制台应用程序输出颜色字体[更正版]
  8. OS X 终端修改备忘录
  9. PDMS Pipeline Tool 教程(一):安装说明
  10. ffmpeg之libx264编译安装方法及一键shell脚本
  11. 单片机C语言关键字之extern
  12. 信了你的邪之杭电1005
  13. 华为me909s与MT2503拨号上网流程总结
  14. Java基础教程:dubbo源码解析-服务暴露与发现
  15. 金山WPS服务端开发工程师(第一次)(2018年秋招 2018-9-4)
  16. 用大写字母打印三角形
  17. 全网最新小白API查Q绑定带反查SGK+带接口
  18. matlab四足仿真,基于MATLAB的四足机器人建模与仿真.docx
  19. SaaS独角兽成长秘籍:40%法则+7步走战略
  20. 关于微信支付签名错误的一些可能的解决方向

热门文章

  1. max3232ese_【MAX3232ESE+ PDF数据手册】_中文资料_引脚图及功能_(美信 Maxim Integrated)-采芯网...
  2. 华表Cell应用 - 在IE中使用华表Cell插件 | #华表Cell #报表
  3. Android开发程序获取GPS信息步骤
  4. bp神经网络算法原理公式,bp神经网络算法推导
  5. 我的世界服务器物品锁bug,【MOD教程】已知MOD服BUG物品解析
  6. 官方FastReport 2021最新中文开发者指南
  7. php分页类函数,php分页类的使用方法
  8. 抖音小程序达人入驻壁纸微信小程序安装教程
  9. DirectShow 简介
  10. directshow方法关键帧java,如何实现DirectShow source filter