【发布时间】:2011-03-19 10:21:33
【问题描述】:
Spring WebFlow 中的默认日期格式是“yyyy-MM-dd”。
如何更改为另一种格式?例如“dd.mm.yyyy”。
【问题讨论】:
标签: java spring-webflow
Spring WebFlow 中的默认日期格式是“yyyy-MM-dd”。
如何更改为另一种格式?例如“dd.mm.yyyy”。
【问题讨论】:
标签: java spring-webflow
我觉得应该是这样的:
StringToDate std = new StringToDate();
std.setPattern("dd.MM.yyyy");
【讨论】:
对于迟到的帖子感到抱歉,但这是您必须做的。 Spring Webflow 进行自定义数据绑定。它类似于 Spring MVC 的做法。不同之处在于它处理它的位置。 Spring MVC 在控制器级别处理它(使用 @InitBinder )。
Spring webflow 在绑定级别上执行此操作。在执行转换之前,webflow 会将所有参数值绑定到对象,然后验证表单(如果 validate="true"),然后在成功验证时调用转换。
您需要做的是让 webflow 更改它绑定日期的方式。您可以通过编写自定义转换器来做到这一点。
首先你需要一个转换服务:
@Component("myConversionService")
public class MyConversionService extends DefaultConversionService {
public void MyConversionService() {
}
}
Webflow 将使用此服务来确定需要考虑哪些特殊绑定。现在只需编写您的特定日期活页夹(请记住 webflow 默认设置一个日期活页夹,您将直接覆盖它)。
@Component
public class MyDateToString extends StringToObject {
@Autowired
public MyDateToString(MyConversionService conversionService) {
super(Date.class);
conversionService.addConverter(this);
}
@Override
protected Object toObject(String string, Class targetClass) throws Exception {
try{
return new SimpleDateFormat("MM\dd\yyyy").parse(string);//whatever format you want
}catch(ParseException ex){
throw new ConversionExecutionException(string, String.class, targetClass, Date.class);//invokes the typeMissmatch
}
}
}
【讨论】:
MyConversionService 并将您的MyDateToString 添加到该转换服务中。因此,您需要同时创建两者。 MyDateString 没有实现 ConversionService
MyEntity 的类型。如果正确传递了集合,Spring MVC 和 webflow 会为您处理集合(哪些 Web 表单会为您处理)。您需要做的是让您的 toObject 方法返回集合。
我通过创建这个 bean 实现了这一点:
@Component(value = "applicationConversionService") 公共类 ApplicationConversionServiceFactoryBean 扩展 FormattingConversionServiceFactoryBean {
@Override protected void installFormatters(FormatterRegistry registry) { // Register the default date formatter provided by Spring registry.addFormatter(new DateFormatter("dd/MM/yyyy")); } }
像这样注册bean:
<bean id="defaultConversionService" class="org.springframework.binding.convert.service.DefaultConversionService">
<constructor-arg ref="applicationConversionService" />
</bean>
然后被引用:
<mvc:annotation-driven conversion-service="applicationConversionService" />
还有:
<!-- Enables custom conversion, validation and sets a custom vew factory creator on Spring Webflow -->
<webflow:flow-builder-services id="flowBuilderServices" conversion-service="defaultConversionService" validator="validator" view-factory-creator="mvcViewFactoryCreator" />
有了这个配置,它对我来说很好用。希望对你有帮助。
【讨论】: