我们设法通过创建
AnyRefto
Option[AnyRef]转换器并将其添加到Spring MVC
来解决此问题
ConversionService:
import org.springframework.beans.factory.annotation.{Autowired, Qualifier}import org.springframework.core.convert.converter.ConditionalGenericConverterimport org.springframework.core.convert.converter.GenericConverter.ConvertiblePairimport org.springframework.core.convert.{ConversionService, TypeDescriptor}import org.springframework.stereotype.Componentimport scala.collection.convert.WrapAsJavatrait OptionConverter extends ConditionalGenericConverter with WrapAsJava { @Autowired @Qualifier("mvcConversionService") var conversionService: ConversionService = _}@Componentclass AnyRefToOptionConverter extends OptionConverter { override def convert(source: Any, sourceType: TypeDescriptor, targetType: TypeDescriptor): AnyRef = { Option(source).map(s => conversionService.convert(s, sourceType, new Conversions.GenericTypeDescriptor(targetType))) } override def getConvertibleTypes: java.util.Set[ConvertiblePair] = Set( new ConvertiblePair(classOf[AnyRef], classOf[Option[_]]) ) override def matches(sourceType: TypeDescriptor, targetType: TypeDescriptor): Boolean = { Option(targetType.getResolvableType).forall(resolvableType => conversionService.canConvert(sourceType, new Conversions.GenericTypeDescriptor(targetType)) ) }}


