类型不匹配异常:无法将字符串(java.String)转换为所需类型(java.lang.Integer)
Posted
技术标签:
【中文标题】类型不匹配异常:无法将字符串(java.String)转换为所需类型(java.lang.Integer)【英文标题】:type mismatch exception :cannot convert String (java.String) to required type (java.lang.Integer) 【发布时间】:2021-09-16 13:15:50 【问题描述】:我一直在尝试在我的应用程序中提交表单,但我不断收到以下错误
2021-07-05 21:40:38.910[0;39m [33m WARN[0;39m [35m18360[0;39m [2m---[0;39m [2m[nio-8080-exec-3][0;39m [36m.w.s.m.s.DefaultHandlerExceptionResolver[0;39m [2m:[0;39m Resolved [org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'com.issuetracking.app.enitities.Equipment'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.lang.Integer] for value 'lights'; nested exception is java.lang.NumberFormatException: For input string: "lights"]
我已经这样写了我的控制器。它由显示使用表单输入的数据列表的处理程序方法组成。在表单中添加设备详细信息的处理程序方法。但是,我一直在尝试在同一页面上执行此操作,以便当我在表单中提交数据时,它应该显示在同一页面上表单下方的表格中。我哪里出错了,我怎么能做到这一点?提前致谢。
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import com.issuetracking.app.enitities.Equipment;
import com.issuetracking.app.services.EquipmentService;
@Controller
public class EquipmentController
private EquipmentService equipmentService;
public EquipmentController(EquipmentService equipmentService)
super();
this.equipmentService = equipmentService;
@GetMapping("/equipment")
public String listEquipment(Model model)
model.addAttribute("equipment",equipmentService.getAllEquipment());
return "equipment";
@GetMapping("/equipment/new")
public String addEquipment(Model model)
Equipment equipment = new Equipment();
model.addAttribute("equipment", equipment);
return "equipment";
@PostMapping("/equipment")
public String saveEquipment(@ModelAttribute("equipment") Equipment equipments)
System.out.println(equipmentService.saveEquipment(equipments));
return "redirect:/equipment";
【问题讨论】:
您能否将其显示为导致此日志的输入 @MaroineMlis 无法将值“lights”从类型 [java.lang.String] 转换为类型 [java.lang.Integer];嵌套异常是 java.lang.NumberFormatException: For input string: "lights"]<form action="#" th:action="@/equipment" th:object = "$equipments" method="post"> <div class="form-group"> <label for="equip">Name of Equipment</label> <input type="text" class="form-control" id="equip" th:field="*equipment" placeholder="Enter Equipment here..."> </div>
我的意思是设备类
@MaroineMlis ` @Column(name="Name_of_equipment") 私有字符串设备; `
这个类导入 com.issuetracking.app.enitities.Equipment ?
【参考方案1】:
基于错误,我会说有一个属性“填充”,字符串值“灯”。并且这些值在映射过程中不能转换为整数,因为对于相应的属性,需要一个整数。我会说,输入对象不正确。
【讨论】:
但在实体类中,为设备属性指定的类型是字符串,唯一存在的整数是无属性。以上是关于类型不匹配异常:无法将字符串(java.String)转换为所需类型(java.lang.Integer)的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin数字类型 ( 安全转换函数 | 浮点型转整型 )