我想使用SpringConversionService
和自定义转换器
实现来转换来自Spring XML配置的值。
<bean name="A1" class="com.example.MyClass">
<constructor-arg name="time" value="10"/>
</bean>
import java.time.Duration;
public class MyClass {
public MyClass(Duration time) {
System.out.println("TIME: " + time);
}
}
public class StringToDurationInSecondsConverter implements Converter<String, Duration> {
@Override
public Duration convert(String source) {
int seconds = Integer.valueOf(source);
return Duration.ofSeconds(seconds);
}
}
配置如下所示:
@SpringBootApplication
public class Application {
@Bean
public ConversionService conversionService(
Set<Converter<?, ?>> converters,
ConversionServiceFactoryBean factory) {
factory.setConverters(converters);
return factory.getObject();
}
@Bean
public ConversionServiceFactoryBean conversionServiceFactoryBean() {
return new ConversionServiceFactoryBean();
}
@Bean
public StringToDurationInSecondsConverter stringToDurationInSecondsConverter() {
return new StringToDurationInSecondsConverter();
}
// ...
}
转换器按预期注入ConversionService
方法,以便正确初始化ConversionService
。但是无法执行xml配置中参数time
的转换。错误消息为:
org.springframework.beans.factory.unsatisfiedDependencyException:在通过SAX inputsource加载的资源中创建名为“A1”的bean时出错:未满足的依赖关系通过构造函数参数0表示:无法将类型[java.lang.string]的参数值转换为必需的类型[java.time.duration]:无法将类型'java.lang.string'的值转换为必需的类型'java.time.duration';嵌套异常是java.lang.IllegalStateException:无法将类型“java.lang.String”的值转换为所需类型“java.time.Duration”:找不到匹配的编辑器或转换策略
如果将断点设置到convert
方法中,则永远无法到达断点。所以看起来转换器从来没有被调用过。
即使我将ConversionService
直接注入(修改的)MyClass
并在构造函数中调用Conversion
方法...
public class MyClass {
public MyClass(String time, ConversionService conversionService) {
final Duration duration = conversionService.convert(time, Duration.class);
System.out.println(duration);
}
}
...我得到了一个例外:
由于Sotirios Delimanolis(关于另一个问题)的评论,我得出了以下解决方案:
@Bean
public ConversionService conversionService(Set<Converter<?, ?>> converters) {
final ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
factory.setConverters(converters);
factory.afterPropertiesSet(); // necessary
return factory.getObject();
}
从XML转换属性值现在工作得很好。
我正在尝试使用DozerJava API使用自定义转换器映射两个Java类。有没有办法在Java中配置类级自定义转换器?现在,我必须在XML中添加配置: 感谢您的帮助!
主要内容:JSF自定义转换器实例我们可以在JSF中创建自己的自定义转换器。 以下列表是我们可以在JSF中创建自定义转换器的步骤。 通过实现接口创建一个转换器类。 实现上述接口的和方法。 使用注解为自定义转换器分配唯一的ID。 JSF自定义转换器实例 打开 NetBeans IDE 创建一个Web工程:CustomConverter,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文
I'v开始寻找很好的解决方案,如何使用Spring CassandraOperations很好地持久化实体。问题的出现是因为我的实体中的某些字段不支持cassandra,例如joda DateTime。 解决方法是在java类型的同一实体中有其他字段。util。Date而不是joda DateTime,用@Transient标记未要求的字段。但这并不干净,所以我开始寻找自动自定义转换。 目前,sp
这是我的字符串格式的肥皂xml,我需要如何在Farm对象中形成它。Farm是我的自定义类,任何库都是现成的 使用此代码后,我得到了异常 意外元素(uri:“http://yyyyyy . yyyyy * * * * * * * *”,local:“farm”)。预期的元素有
XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输
我为jsf创建了一个自定义转换器。getAsObject()工作正常,但getAsString()返回异常。我不确定问题出在哪里,我尝试过用不同的方式将对象转换为字符串,但它不断返回异常。 这是我的代码: 这是Product类(为简单起见排除了getter/Setters/equals()/hash()): 这是stack我得到的: 这是我使用转换器的jsf: