如何在Spring控制器

时间:2018-03-14 15:57:33

标签: spring spring-boot spring-data optional vavr

我有一个班级Outcome,其中一个字段是Schema的实例。但由于后者可能为null,我已定义Outcome的{​​{1}}以返回包含在Vavr getSchema()中的值。在我的Spring Boot 2应用程序中,处理更新Option的控制器方法具有参数Outcome。但是,当尝试从表单数据填充此参数时,Spring的转换服务会标记以下错误:

  

无法将'java.lang.String'类型的值转换为属性'schema'所需的类型'io.vavr.control.Option':找不到匹配的编辑器或转换策略

也就是说,它无法将字符串标识符(如“1234”)映射到具有该@Valid Outcome outcome标识符的现有Schema实例,然后设置Long实例的{{1那个字段。尽管在我的Outcome课程中我已经添加了Spring的转换服务Spring Data schema,声称可以处理转换Vavr WebMvcConfigurer

QueryExecutionConverters

如果我更改Optional的{​​{1}}以返回Java 8的import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.support.ConfigurableConversionService; import org.springframework.core.convert.support.DefaultConversionService; import org.springframework.data.repository.util.QueryExecutionConverters; ... @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Bean(name="conversionService") public ConversionService getConversionService() { ConfigurableConversionService conversionService = new DefaultConversionService(); QueryExecutionConverters.registerConvertersIn(conversionService); System.out.println("Registered QueryExecutionConverters"); return conversionService; } ... ,则会为Outcome实例成功设置架构字段 传递给我的控制器方法。

0 个答案:

没有答案