当前位置: 首页 > 知识库问答 >
问题:

如何修复在JSP视图中显示递归模型时“未能从java.lang.String类型转换为@javax.persistence.Id类型”

晋安国
2023-03-14

我创建了一个具有递归关系的模型,但当我在JSP视图中以形式显示它时:select,它会返回一个关于数据类型转换的错误,如何在JSP视图中显示递归模型?

我正在使用Java1.8和SpringCore4.1。

当我显示一个数据库行时,递归字段为null,它可以工作,但当我尝试显示一个递归字段填充了有效值的行时,它不工作并生成错误。

这是类类别中的模型字段

@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(nullable=true)
private Category subCategory;

我的控制器向JSP视图发送一个名为“Category”的类别对象

modelAndView.addObject("category", category);

在视图中,我通过一个表单显示对象:选择组件

<form:select path="subCategory.id" 
             id="category_subCategory"
             multiple="false"
             cssClass="form-control">
  <form:option value="null">-</form:option>
  <form:options items="${categories}"
                itemValue="id"
                itemLabel="name"/>
</form:select>

它没有显示组件,而是中断并生成以下错误:

2019年6月26日下午4:03:09组织。阿帕奇。卡塔琳娜。果心ApplicationDispatcher调用:Servlet。servlet[jsp]的service()引发了java异常。lang.NumberFormatException:对于输入字符串,java中的“null”。lang.NumberFormatException。forInputString(NumberFormatException.java:65)。。。

2019年6月26日下午4:03:09组织。阿帕奇。卡塔琳娜。果心StandardWrapperValve:Servlet。路径为[/ecommerce]的上下文中servlet[dispatcher]的服务()引发异常[javax.servlet.ServletException:javax.servlet.jsp.jspeException:org.springframework.core.convert.ConversionFailedException:java.lang.String类型转换为@javax.persistence.Id@javax.persistence.GeneratedValue java.lang.Integer类型失败,值为“null”;嵌套异常为java.lang.NumberFormatException:输入字符串:“null”]使用根本原因java。lang.NumberFormatException:对于输入字符串:“null”。。。

共有1个答案

锺离高丽
2023-03-14

嗯,我正在做一个项目,JavaSpring,我必须创建一个名为Converters的文件夹,并创建一个包含所有域类的转换器。我需要创建两个转换器一个从字符串到域类和viceversa

该代码的一个示例是:

package converters;

import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import domain.Application;

@Component
@Transactional
public class ApplicationToStringConverter implements Converter<Application, String> {

    @Override
    public String convert(final Application application) {
        String result;

        if (application == null)
            result = null;
        else
            result = String.valueOf(application.getId());

        return result;
    }

}

-----------------------------和---------------------------

package converters;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;

import repositories.ApplicationRepository;
import domain.Application;

@Component
@Transactional
public class StringToApplicationConverter implements Converter<String, Application> {

    @Autowired
    ApplicationRepository   applicationRepository;


    @Override
    public Application convert(final String text) {
        Application result;
        int id;

        try {
            if (StringUtils.isEmpty(text))
                result = null;
            else {
                id = Integer.valueOf(text);
                result = this.applicationRepository.findOne(id);
            }
        } catch (final Throwable oops) {
            throw new IllegalArgumentException(oops);
        }

        return result;
    }

}

---------应用类----------

@Entity
@Access(AccessType.PROPERTY)
public class Application extends DomainEntity {

    private Date        moment;
    private String      explication;
    private String      urlCode;


    @NotNull
    public Date getMoment() {
        return this.moment;
    }

    public void setMoment(final Date moment) {
        this.moment = moment;
    }

    @NotNull
    @SafeHtml(whitelistType = SafeHtml.WhiteListType.NONE)
    public String getExplication() {
        return this.explication;
    }

    public void setExplication(final String explication) {
        this.explication = explication;
    }

    @NotNull
    @URL
    @SafeHtml(whitelistType = SafeHtml.WhiteListType.NONE)
    public String getUrlCode() {
        return this.urlCode;
    }

    public void setUrlCode(final String urlCode) {
        this.urlCode = urlCode;
    }

    public Date getSubmitMoment() {
        return this.submitMoment;
    }

    public void setSubmitMoment(final Date submitMoment) {
        this.submitMoment = submitMoment;
    }

}

----存储库类---------

package repositories;

import java.util.Collection;
import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import domain.Application;

@Repository
public interface ApplicationRepository extends JpaRepository<Application, Integer> {

    @Query("select a from Application a where a")
    public Collection<Application> getAllApplications();

}
 类似资料:
  • 我想在json中以的形式发布上面的字符串日期,但我收到了400个错误请求。有人能帮忙吗。我使用过,但它也没有帮助我。

  • 我不确定我是否错过了一些真正基本的东西,但这是我想做的。 我想对这个地址进行rest API调用: https://localhost:8080/fetchlocation?lat=-26.2041028和lng=28.0473051和radius=500 我想这是因为当我进行GET调用时,rest API接收的坐标是字符串而不是long。我如何确保rest API在调用时得到的是长值而不是字符串

  • 问题内容: 我花了2天的时间找到问题的解决方案。 这是错误: 这是JSON: 用于获取字符串值的类: 这是转换为JSONArray: 我试图获取Json对象,然后将其转换为Json数组,但收到相同的错误。 问题答案: 问题是您的JSON格式不正确。我已经尝试过使用示例JSON,并找到了解决方案。现在,内置的JSONObject和JSONArray无法用于获取此类JSON响应。 您需要通过将其添加到

  • io.github.openfeign.feign-hystrix->v10.10.1 io.github.openfeign.feign-form->V3.8.0 Feign Retryer错误-找不到能够从[java.lang.String]类型转换为[java.lang.class ]类型的转换器 更新应用程序的配置 向你致意,Manuag

  • 任何归纳类型都是这样定义的 具有类型。对此有一个双重概念,叫做共感应。 具有类型。注意和是如何对偶的。作为归纳和共归纳数据类型的示例,请看这个函式。 总是,也是如此。 我们可以使用从和生成。 这也是每次我们获得一个元素时,总共。 我的问题是,如果不使用递归(直接或间接),我们能否在时间内将转换为? 我知道如何使用递归(将转换为,然后将转换为(初始转换是,但随后)中的每个元素都是,使得第二次转换to

  • 从上面的标题来看,目前我遇到了一个问题,即无法从一个模型类转换到另一个模型类。我写的代码有问题吗?请随时向我询问更多信息。非常感谢。 我怀疑: 这种方法“selectTheOldFnException”有一些错误,那就是使用了hibernate,但我不确定这个理论。 REST控制器 使用HIBERNATE-MatchingEngine选择POJO。班 POJO班 例外代码