我似乎找到了一个支持空字符串的 Null 值的配置。对于我的@Controller,我坚持使用StringTrimmerEditor
我的@ControllerAdvice
. 这里没有什么新鲜事。
对于 SWFConversionService
似乎可以解决问题:首先,我创建一个Converter
将 "" 转换为 Null 的方法:
public class StringToNullConverter implements Converter<String, String> {
@Override
public String convert(String source) {
if (StringUtils.isEmpty(source)) {
return null;
}
return source;
}
}
现在我必须在 Spring 中注册:
import org.springframework.core.convert.*;
@Configuration
public class SpringConfiguration {
@Bean public ConversionService conversionService() {
DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
conversionService.addConverter(new StringToNullConverter());
return conversionService;
}
}
到目前为止,没有任何新的事情发生,我们正在谈论org.springframework.core.convert
包。现在将 SWF 胶水放入org.springframework.binding.convert
包装中:
import org.springframework.binding.convert.*;
@Bean public ConversionService flowConversionService(org.springframework.core.convert.ConversionService conversionService) {
DefaultConversionService service = new DefaultConversionService(conversionService);
return service;
}
使用 .将其连接到 SWF 中
<webflow:flow-builder-services [..] conversion-service="flowConversionService" />
。
这看起来有点太多了,但它确实完成了工作。我确信一定有更好的方法,因为我有两种不同的实现(StringTrimmerEditor
和StringToNullConverter
)来实现相同的目标。对我来说,这ConversionService
似乎是唯一的方法。但我不知道如何为 Spring 完成它@Controller
。