gpt4 book ai didi

spring-mvc - JavaConfig 中的 Spring Web Flow 转换服务

转载 作者:行者123 更新时间:2023-12-02 04:28:55 26 4
gpt4 key购买 nike

我已经开始在 Spring Weblow 中开发 Web 应用程序。这个想法是尽可能用 Java 编写,而不是 XML。因此,我首先使用用于 MVC 配置和 Web Flow 配置的 JavaConfig 文件。但当我需要转换器来使用 Spring Web Flow 输入和提交表单时,我遇到了问题。

我对 ConversionService 和 Converters 做了很多研究。我发现了很多实现自定义 ConversionService 和自定义转换器的示例,但我没有找到将 ConversionService 添加到 JavaConfig 中的 Web Flow 配置的示例(配置始终是 XML)。

我确实尝试用 Java 重现 XML 配置,这几乎成功了。在表单页面中,POJO(员工)列表以下拉列表的形式表示。输入是 List<Employee>转换器(StringToObject 的子类)将每个 Employee 表示为字符串。但是在提交表单时,我收到错误,没有找到 String to Employee 的转换器。所以基本上,在渲染页面时找到并使用了自定义转换器,但在提交表单时,无法找到相同的转换器进行反向过程。

我最终通过将 JavaConfig 回滚到 XML 配置并将自定义格式化程序添加到 MVC 配置的 ConversionService 来修复它。但如果可能的话,我希望在 JavaConfig 中实现这项工作。我相信问题在于需要将 ConversionService bean(org.springframework.core.convert 包)添加到 MVC 配置中,因为需要将该 bean 设置为 ConversionService bean 中的委托(delegate) ConversionService 才能添加到 Web Flow配置(后者来自 org.springframework.binding.convert 包)。但我不知道如何在 JavaConfig 中添加这个核心 ConversionService,就像下面代码中的 mvc:annotation-driven 标记一样。

这一切都归结为需要以下代码的 JavaConfig 版本:

<mvc:annotation-driven conversion-service="typeConversionService" ... />

<bean id="typeConversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<list>
<bean class="some.package.holidays.formatter.EmployeeFormatter">
<constructor-arg ref="employeeService"/>
</bean>
<bean class="org.springframework.format.datetime.DateFormatter">
<constructor-arg value="dd/MM/yyyy"/>
</bean>

</list>
</property>
</bean>

如果有人了解 Spring Webflow 的 JavaConfig,尤其是添加 ConversionService,请告诉我,这将是一个很大的帮助。

最佳答案

我在一个项目中要做同样的事情,这就是我所做的。我知道这对你来说可能已经晚了,但也许其他人需要这个答案:

@Configuration
public class WebFlowConfig extends AbstractFlowConfiguration {

@Autowired
private MvcConfig webMvcConfig;

@Bean
public FlowBuilderServices flowBuilderServices() {
return getFlowBuilderServicesBuilder()
.setViewFactoryCreator(mvcViewFactoryCreator())
.setValidator(this.webMvcConfig.validator())
.setConversionService(conversionService())
.setDevelopmentMode(true)
.build();
}

@Bean
DefaultConversionService conversionService() {
return new DefaultConversionService(conversionServiceFactoryBean().getObject());
}


@Bean
FormattingConversionServiceFactoryBean conversionServiceFactoryBean() {
FormattingConversionServiceFactoryBean fcs = new FormattingConversionServiceFactoryBean();
Set<Formatter> fmts = new HashSet<>();
fmts.add(this.webMvcConfig.dateFormatter());
fmts.add(this.webMvcConfig.employeeFormatter());
fcs.setFormatters(fmts);
return fcs;
} }

关于spring-mvc - JavaConfig 中的 Spring Web Flow 转换服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com