【问题标题】:Spring boot getConversionService returns nullSpring启动getConversionService返回null
【发布时间】:2018-05-14 09:47:32
【问题描述】:

我在使用 Spring Boot 时遇到问题,在我的控制器中,我的参数类型是日期,URL 像这样 /testDateParam?date=2018-05-14 所以我写了一个 StringType 转换器,但我仍然得到一个错误,原因是:

java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为所需类型“java.util.Date”:找不到匹配的编辑器或转换策略。

调试后发现TypeConverterDelegate类中的方法convertIfNecessary得到了null:

ConversionService conversionService = this.propertyEditorRegistry.getConversionService(); 

我收到了null,但如果我使用

SpringContextHolder.getBean("conversionService")

我可以获得我定义的有效转换服务:

@Bean(name="conversionService")
public ConversionServiceFactoryBean getConversionService() {
    ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean();
    Set<Converter> converters = new HashSet<>();

    converters.add(new RyderStringToDateConverter());
    bean.setConverters(converters);
    return bean;
}

在我创建的一个演示项目中,这工作正常,但在我的工作项目中,我真的不知道如何解决它,任何想法我将不胜感激,谢谢

ps:spring boot是2.0.1.RELEASE最新版本

【问题讨论】:

  • 能否请您格式化您的问题以便阅读
  • 很抱歉,感谢您为我编辑它

标签: java spring spring-boot


【解决方案1】:

如果您使用的是 Springboot,则不必覆盖参数转换。 只需尝试将其添加到您的控制器:

@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) 日期日期

更多关于@DateTimeFormat

【讨论】:

  • @RequestMapping("/testDateParam") @ResponseBody public String testDateParam(@RequestParam @DateTimeFormat(pattern="yyyy-MM-dd") Date date){ return date.toString(); } 仍然有同样的错误....
  • 你有默认的杰克逊反序列化/序列化,还是为那个项目使用自定义的?
  • 发现问题了,我用shiro来控制权限,但是在发送请求的时候莫名其妙出现问题,很难调试
猜你喜欢
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 2021-09-21
  • 1970-01-01
  • 2016-07-24
  • 2013-07-02
  • 2020-03-15
相关资源
最近更新 更多