我有一个班级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
实例成功设置架构字段 传递给我的控制器方法。