类型不匹配异常:无法将字符串(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数字类型 ( 安全转换函数 | 浮点型转整型 )

Erlang - **异常错误:右侧值不匹配

对象与目标类型不匹配

Access 查询中的数据类型不匹配异常

SSRS无法将输入列映射到查阅列,因为数据类型不匹配但两者都是int

Magento 信用卡号与信用卡类型异常不匹配