java - 无法从类型 [java.lang.String] 转换为类型 [@javax.persistence.Id @javax.persistence.GenerateValue int]

标签 java spring hibernate jsp-tags

这是我在 JSP 页面中的错误

    Servlet.service() for servlet jsp threw exception
java.lang.NumberFormatException: For input string: "${c.catId}"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.valueOf(Unknown Source)
    at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:208)
    at org.springframework.core.convert.support.StringToNumberConverterFactory$StringToNumber.convert(StringToNumberConverterFactory.java:62)
    at org.springframework.core.convert.support.StringToNumberConverterFactory$StringToNumber.convert(StringToNumberConverterFactory.java:49)
    at org.springframework.core.convert.support.GenericConversionService$ConverterFactoryAdapter.convert(GenericConversionService.java:436)
    at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:37)
    at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:203)
    at org.springframework.core.convert.support.ConvertingPropertyEditorAdapter.setAsText(ConvertingPropertyEditorAdapter.java:59)
    at org.springframework.web.servlet.tags.form.SelectedValueComparator.exhaustiveCompare(SelectedValueComparator.java:173)
    at org.springframework.web.servlet.tags.form.SelectedValueComparator.isSelected(SelectedValueComparator.java:98)
    at org.springframework.web.servlet.tags.form.OptionTag.isSelected(OptionTag.java:238)
    at org.springframework.web.servlet.tags.form.OptionTag.renderOption(OptionTag.java:202)
    at org.springframework.web.servlet.tags.form.OptionTag.renderFromBodyContent(OptionTag.java:151)
    at org.springframework.web.servlet.tags.form.AbstractHtmlElementBodyTag.doEndTag(AbstractHtmlElementBodyTag.java:66)
    at org.apache.jsp.WEB_002dINF.views.ProductForm_jsp._jspService(ProductForm_jsp.java:333)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:716)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

Aug 03, 2017 2:06:22 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/frontend] threw exception [org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@javax.persistence.Id @javax.persistence.GeneratedValue int] for value '${c.catId}'; nested exception is java.lang.NumberFormatException: For input string: "${c.catId}"] with root cause
java.lang.NumberFormatException: For input string: "${c.catId}"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.valueOf(Unknown Source)
    at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:208)
    at org.springframework.core.convert.support.StringToNumberConverterFactory$StringToNumber.convert(StringToNumberConverterFactory.java:62)
    at org.springframework.core.convert.support.StringToNumberConverterFactory$StringToNumber.convert(StringToNumberConverterFactory.java:49)
    at org.springframework.core.convert.support.GenericConversionService$ConverterFactoryAdapter.convert(GenericConversionService.java:436)
    at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:37)
    at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:203)
    at org.springframework.core.convert.support.ConvertingPropertyEditorAdapter.setAsText(ConvertingPropertyEditorAdapter.java:59)
    at org.springframework.web.servlet.tags.form.SelectedValueComparator.exhaustiveCompare(SelectedValueComparator.java:173)
    at org.springframework.web.servlet.tags.form.SelectedValueComparator.isSelected(SelectedValueComparator.java:98)
    at org.springframework.web.servlet.tags.form.OptionTag.isSelected(OptionTag.java:238)
    at org.springframework.web.servlet.tags.form.OptionTag.renderOption(OptionTag.java:202)
    at org.springframework.web.servlet.tags.form.OptionTag.renderFromBodyContent(OptionTag.java:151)
    at org.springframework.web.servlet.tags.form.AbstractHtmlElementBodyTag.doEndTag(AbstractHtmlElementBodyTag.java:66)
    at org.apache.jsp.WEB_002dINF.views.ProductForm_jsp._jspService(ProductForm_jsp.java:333)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:716)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

这是我的产品表单,我在 fasgen 上点击“销售”

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="a" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> 
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Product Form</title>
</head>
<body>
<jsp:include page="Header.jsp"></jsp:include>
<!-- Product insertion -->
<%-- <a:url var="url" value='/saveproduct' /> --%>
<%-- <spring:url value='/saveproduct' var="url"/> --%>
<form:form action="saveproduct" commandName="product">
<div class="form-group">
<form:hidden path="pid" class="form-control" />
</div>
<div class="form-group">
Enter Model Details:
<form:input path="modelDetails" class="form-control" />
</div>
<div class="form-group">
Enter Product Name:
<form:input path="productname" class="form-control" />
</div>
<div class="form-group">
Enter Price:
<form:input path="price" class="form-control" />
</div>
<div class="form-group">
Enter Quantity:
<form:input path="qty" class="form-control" />
</div>
<div class="form-group">
Enter Patter:
<form:input path="pattern" class="form-control" />
</div>
<div class="form-group">
Enter Style Type:
<form:input path="styleType" class="form-control" />
</div>
<div class="form-group">
Enter Wear Type
<form:input path="weartype" class="form-control" />
</div>
<div class="form-group">
Enter Style Code:
<form:input path="styleCode" class="form-control" />
</div>
<div class="form-group">
Enter Colour:
<form:input path="color" class="form-control" />
</div>
<div class="form-group">
Enter Fabric Care:
<form:input path="fabriccare" class="form-control" />
</div>
<div class="form-group">
Type:
<form:input path="type" class="form-control" />
</div>
<div class="form-group">
Sleeve:
<form:input path="sleeve" class="form-control" />
</div>
<div class="form-group">
Enter Neck Type:
<form:input path="necktype" class="form-control" />
</div>
<div class="form-group">
Enter Pockets:
<form:input path="pockets" class="form-control" />
</div>
<div class="form-group">
Enter Pockets:
<form:input path="price" class="form-control" />
</div>
<div class="form-group">
Ideal For:
<form:select path="category.catId">
<a:forEach items="${categories} " var="c"  >
<form:option value="${c.catId}">${c.idealfor }</form:option>
</a:forEach>
</form:select>
</div>
<div class="form-group">
<input type="submit" value="Add Product">
</div>
</form:form>

<jsp:include page="Footer.jsp"></jsp:include>
</body>
</html>

我的产品 Controller

package com.project.controllers;

import java.util.List;

//import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import com.project.service.ProductService;
import com.project.model.Category;
//import com.project.service.ProductServiceImpl;
import com.project.model.Product;

@Controller
public class ProductController {
    @Autowired
    private ProductService productService;
    @RequestMapping(value="/ProductForm")
    public String productForm(Model model) {
        List<Category> categories=productService.getAllCategory();
        model.addAttribute("categories",categories);
        model.addAttribute("product", new Product());
        System.out.println(categories);
        return "ProductForm";
    }
    @RequestMapping(value="/saveproduct")
    public String saveProduct(@ModelAttribute(name="product") Product product,BindingResult result){
        productService.addProduct(product);
        return "Home";
    }

}

这是我的模型

    package com.project.model;


import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int pid;
    private int qty;
    private String productname;
    private String modelDetails;
    private String pattern;
    private String styleType;
    private String weartype;
    private String styleCode;
    private String color;
    private String fabriccare;
    private String type;
    private String sleeve;
    private String necktype;
    private int pockets;
    private double price;
    @ManyToOne
    @JoinColumn(name="catId")
    private Category category;
    public int getPid() {
        return pid;
    }
    public int getQty() {
        return qty;
    }
    public String getProductname() {
        return productname;
    }
    public String getModelDetails() {
        return modelDetails;
    }
    public String getPattern() {
        return pattern;
    }
    public String getStyleType() {
        return styleType;
    }
    public String getWeartype() {
        return weartype;
    }
    public String getStyleCode() {
        return styleCode;
    }
    public String getColor() {
        return color;
    }
    public String getFabriccare() {
        return fabriccare;
    }
    public String getType() {
        return type;
    }
    public String getSleeve() {
        return sleeve;
    }
    public String getNecktype() {
        return necktype;
    }
    public int getPockets() {
        return pockets;
    }
    public double getPrice() {
        return price;
    }
    public Category getCategory() {
        return category;
    }
    public void setPid(int pid) {
        this.pid = pid;
    }
    public void setQty(int qty) {
        this.qty = qty;
    }
    public void setProductname(String productname) {
        this.productname = productname;
    }
    public void setModelDetails(String modelDetails) {
        this.modelDetails = modelDetails;
    }
    public void setPattern(String pattern) {
        this.pattern = pattern;
    }
    public void setStyleType(String styleType) {
        this.styleType = styleType;
    }
    public void setWeartype(String weartype) {
        this.weartype = weartype;
    }
    public void setStyleCode(String styleCode) {
        this.styleCode = styleCode;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public void setFabriccare(String fabriccare) {
        this.fabriccare = fabriccare;
    }
    public void setType(String type) {
        this.type = type;
    }
    public void setSleeve(String sleeve) {
        this.sleeve = sleeve;
    }
    public void setNecktype(String necktype) {
        this.necktype = necktype;
    }
    public void setPockets(int pockets) {
        this.pockets = pockets;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public void setCategory(Category category) {
        this.category = category;
    }


}

类别模型

   package com.project.model;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.List;

@Entity
public class Category {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int catId;
    private String idealfor;
    @OneToMany(cascade=CascadeType.ALL,mappedBy="category")
    private List<Product> product;
    public int getCatId() {
        return catId;
    }
    public String getIdealfor() {
        return idealfor;
    }
    public List<Product> getProduct() {
        return product;
    }
    public void setCatId(int catId) {
        this.catId = catId;
    }
    public void setIdealfor(String idealfor) {
        this.idealfor = idealfor;
    }
    public void setProduct(List<Product> product) {
        this.product = product;
    }

}

现在我在 headear.jsp 中单击“出售 Fashgen”,同时单击它显示此异常。我已经检查了许多解决方案,但最终我需要帮助,请让我摆脱这个问题

我也添加了类别实体

最佳答案

在我测试了您的代码后,我意识到您的类别没有正确的 catId setter ,这导致了问题

public void setCatId(int catid) {
    this.catId = catId; //This statement doesn't ever set the catId to catid
}

因此,在您的 Category 类中,将您的 setCatId 方法更改为此

public void setCatId(int catid) {
    this.catId = catid; //Set catId to catid
}

注意:始终尝试使用 IDE 自动生成 setter/getter。在 Eclipse 中源 -> 生成 Getters 和 Setters...

<小时/>

更新 1: 您的 setter/getter 似乎也没有采用正确的格式。 将您的 getter 更新为此

public int getCatId() { //Mind the camelCase name of this method
    return catId;
}

关于java - 无法从类型 [java.lang.String] 转换为类型 [@javax.persistence.Id @javax.persistence.GenerateValue int],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45476957/

相关文章:

java - Java 中的 OurCompanyRuntimeException 类型有什么意义?

spring - 如何在您的配置中修复 "Consider defining a bean of type ' org.jooq.DSLContext'。”更新到 jOOQ 3.15.0 后

java - 使用 EvaluationContextExtensionSupport 和自定义 PermissionEvaluator 将 Spring Boot 2.0.6 迁移到 2.1.0 时出现“无效的 bean 定义”

java - JPA继承两个或多个父类(super class)

image - 如何使用hibernate将图像存储到postgres数据库中

java - 从 Spring 3 升级到 Spring 4 后,HibernateTemplate 出现不兼容类型错误

java - 已构建异常 : This object has already been built

java - 检查控制台是否支持 Java 中的 ANSI 转义码

java - 将 HBase 列族历史记录设置为无穷大

java - 具有使用相同存储库和模型类的多个数据源的 Spring Boot?