当前位置: 首页 > 面试题库 >

Spring表格绑定怎么办?无法将类型[java.lang.String]的值转换为必需的类型

席俊
2023-03-14
问题内容

这是我的表格:

<form:form modelAttribute="fooDTO">
fooCountry: 
<form:select path="country">
  <form:options items="${countries}" itemLabel="shortName" itemValue="id"/> 
</form:select>

这是pojo的支持:

public class FooDTO
{
  private Country country;
 //getters and setters present
}

所选选项默认为fooDTO中的国家/地区值,这很好。但是,提交表单时,绑定会失败-
我遇到上述错误,是否必须在绑定器中注册自定义编辑器,或者是否有更简单的方法?国家几乎是您所期望的,国家确实是控制器中填充的国家列表…


问题答案:

Spring 3引入了Converter
SPI,这使得这非常容易。看一下文档中的6.5

从文档中获取资料并放入您的国家/地区,您会做类似的事情

package my.converter;

final class StringToCountry implements Converter<String, Country> {
    public Country convert(String source) {
        return // whatever you do to get a country from your string
    }
}

然后在xml配置中,您将html" target="_blank">配置转换器

<bean id="conversionService"
      class="org.springframework.context.support.ConversionServiceFactoryBean">
    <property name="converters">
        <list>
            <bean class="my.converter.StringToCountry"/>
        </list>
    </property>
</bean>

正如GriffeyDog指出的那样,您可能希望将国家ID放入选择路径,以便可以通过ID或其他方式(而不是Country对象的toString()返回的值)获得Country。



 类似资料:
  • 我正在使用Spring的BeanPropertyRowMapper将来自数据库的行映射到我的Bean类Employee,枚举有两种类型,Active和inactive。当beanpropertyrowmapper尝试将来自数据库的字符串转换为我的枚举时,它会失败。(Enum在类中是empStatus作为枚举,并在数据库中声明为字符串)。 我不想为每个服务编写自定义行映射器,我需要一些映射相关类枚举

  • 我是Spring和Java的新手,正在使用JSP、JSTL、Hibernate/JPA和一个model类使表单在Spring MVC中工作。我可以让页面显示得很好,但是创建用户的帖子给了我一个错误。 这个错误是有意义的,因为表单正在传回角色的ID,而User对象期望传递一个Role对象。但是,我不确定如何解决这一问题,同时仍然允许我的JSP由我的实际实体对象支持,因为我希望使用Spring/Hib

  • 这是控制器代码部分: 我收到这条消息: 出现错误(类型=错误请求,状态=400)。无法将类型[java.lang.String]的值转换为所需类型[java.util.Date];嵌套异常为org.springframework.core.convert.conversionfailedexception:无法将值“Wed Jun 08 00:00:00 WET 2016”从类型[java.lan

  • 我有两个实体,它们使用一个主键互相引用,主键是一个实体的整数。我不确定我做这件事的方式是否正确。 下面是引用主键id为int的实体 下面是我们从上面的实体中将外键设置为Kmichango kandaMchango的实体。 这里是表单的一部分,我在这里提交了用户在jumuiya_michango_form.html中提供的数据 下面是我的控制器中用于链接到表单和发布数据的两个方法 在我提交表单后,我

  • 问题内容: 我想使用@Value注释注入Double属性,例如: 并使用Spring属性占位符(属性文件): 我得到异常: org.springframework.beans.TypeMismatchException:无法将类型“ java.lang.String”的值转换为所需的类型“ java.lang.Double”;嵌套的异常是java.lang.NumberFormatExceptio

  • 我是SpringMVC的新手。我开发了一个执行选择,插入,更新和删除的示例应用程序。 下面是我的Bean类 下面是我的控制器类 下面是我的JSP页面 现在我面临两个问题。输入值并单击“添加学生”按钮后,收到以下错误。

  • 我正在关注Spring in Action 5,在按下提交按钮后创建Taco模型时遇到问题。这是我的设计Taco控制器类: 以及我捕获的错误消息: 炸玉米饼实体如下所示: 以及我的配料实体: 这是一个html页面,必须使用所选成分创建新的Taco对象: 我该怎么修理它?谢谢你的预付款。

  • 我正试图通过提供JSON格式的所需请求来使用postman来访问一个服务: 邮递员屏幕 但我得到了一个错误: “无法将类型”java.lang.String“的值转换为所需的类型”SampleRequestObject“;嵌套异常为java.lang.IllegalStateException:无法将类型[java.lang.String]的值转换为所需类型“ 控制器 SampleRequestO