2

Spring Webflow フォームでバインドされた Date フィールドの内容をフォーマットする際に問題があります。検証の終わりは機能しており、注釈で指定された日付形式を正しく適用します。しかし、何を試しても、バインドされた日付フィールド (現在の日付が事前に入力されている) の初期表示の形式を制御できません。Spring 3.1.2.RELEASE、Webflow 2.3.2.RELEASE、joda-time 2.2 を使用しています。

フォームの日付フィールドには、最初は「Thu Apr 04 02:01:06 BST 2013」が入力されていますが、「04:04:2013」を含めたいと思います。(コロンを使ったおかしな形式は気にしないでください。テスト用に一般的な形式を避けているだけです!)

たとえば 13:01:2013 と上書きして送信すると、バインディングは正常に機能し、Webflow は続行します。13/01/2013 などのように上書きすると、検証が ValueCoercionException で失敗し、Web ページのフィールドに「Thu Apr...」という文字列が再入力されます。したがって、少なくとも検証は問題ないようです。

@DateTimeFormat アノテーションがプリンターとパーサーの両方として機能することは理解しましたが、プリンター側を機能させることができません。

これが私のコードの関連ビットです...

event_add.xml (ウェブフロー)

<var name="event" class="project.persistence.DTO.EventDTO"/>
...
<view-state id="event_enterdates" model="flowScope.event">
    <transition on="submit" to="saveEvent" />
</view-state>

EventDTO.java

public class EventDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    private Integer         id;
    private String          name;
    @DateTimeFormat(pattern="dd:MM:yyyy")
    private Date            eventDate;
    ...
}

event_enterdates.jsp

<sf:form method="POST" commandName="event">
<input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"/>
...
<div class="grid_3 formitemname"><label for="event_date">Event date:</label></div>
<div class="grid_3">
<sf:input path="eventDate" maxlength="255" id="event_date" class="form9colinput"/>
...
</sf:form>

プロジェクトサーブレット.xml

<mvc:annotation-driven />

<context:component-scan base-package="project"></context:component-scan>

<flow:flow-executor id="flowExecutor" flow-registry="flowRegistry" />

<flow:flow-registry id="flowRegistry" base-path="/WEB-INF/flows" flow-builder-services="flowBuilderServices">
    <flow:flow-location-pattern value="*.xml" />
</flow:flow-registry>

<flow:flow-builder-services id="flowBuilderServices" conversion-service="defaultConversionService" view-factory-creator="viewFactoryCreator" />

<bean id="viewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
    <property name="viewResolvers" ref="tilesViewResolver" />
</bean>

<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
    <property name="flowRegistry" ref="flowRegistry" />
</bean>

<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
    <property name="flowExecutor" ref="flowExecutor" />
</bean>

<bean id="defaultConversionService" class="org.springframework.binding.convert.service.DefaultConversionService">
    <constructor-arg ref="applicationConversionService"/>
</bean>

<bean id="applicationConversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean" />

バインドされた日付を @DateTimeFormat パターンで指定された形式で表示する方法を知っている人はいますか?

乾杯、イアン

4

1 に答える 1

0

プロパティ エディタを使用してみましたか。Spring には、日付の変換に使用できるものがあります。

リクエストを処理している中で、特定のフォーマット@Controllerの間で変換するように春に指示します。

@InitBinder
protected void initBinder(final WebDataBinder binder) { 
    binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("dd:MM:yyyy") , false));
}
于 2013-07-11T11:58:38.820 に答える