6

Spring WebFlow 中的默认日期格式是“yyyy-MM-dd”。

如何更改为另一种格式?例如“dd.mm.yyyy”。

4

3 回答 3

4

对不起,迟到的帖子,但这是你必须做的。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
        }       
    }
}
于 2010-07-26T23:20:52.587 回答
2

我通过创建这个 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" />

使用此配置,它对我来说很好。我希望它有所帮助。

于 2012-08-17T14:58:53.800 回答
-1

我想应该是这样的:

StringToDate std = new StringToDate();
std.setPattern("dd.MM.yyyy");
于 2010-07-23T09:28:19.943 回答