2016-05-25 4 views
0

日付フィールドを特定の形式(dd-MMMM-yy)で送信するフォームがあります。これは、日付をjava.utilに自動的に解析できるようにスプリングアプリケーションを設定しようとしています.Dateオブジェクト。私が近づいてきたカスタムPropertyEditorを使用したSpringカスタム日付の解析

一つの方法は、これが次に登録するカスタムPropertyEditorRegistrarを作成する最初のインクルードは、フォーム

public class DateTimeEditor extends PropertyEditorSupport { 
    @Override 
    public void setAsText(String value) { 
     try { 
      setValue(new SimpleDateFormat("dd-MMMM-yy").parse(value)); 
     } catch (Exception ex) { 
      setValue(null); 
     } 
    } 

    @Override 
    public String getAsText() { 
     String stringDate = ""; 
     try { 
      stringDate= new SimpleDateFormat("dd-MMMM-yy").format((Date)getValue()); 
     } catch(Exception ex) { 
      // 
     } 
     return stringDate 
    } 
} 

への発信/から着信しているパース私の日付に対処するカスタムPropertyEditorSupportクラスを作成することですPropertyEditorSupportの上に日付が

public class CustomPropertyEditorRegistrar implements PropertyEditorRegistrar { 
    @Override 
    public void registerCustomEditors(PropertyEditorRegistry registry) { 
     registry.registerCustomEditor(Date.class, new DateTimeEditor()); 
    } 
} 

春のコンテキストでBeanを作成して処理する

<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer"> 
    <property name="propertyEditorRegistrars"> 
     <list> 
      <bean class="com.test.CustomPropertyEditorRegistrar" /> 
     </list> 
    </property> 
</bean> 

CustomPropertyEditorRegistrarクラスのregisterCustomEditorsが何度も呼び出されていますが、DateTimeEditorのメソッド(setAsTextまたはgetAsText)が呼び出されることはありません。

なぜでしょうか?あなたはコントローラクラスに結合春にエディタを追加する必要が

答えて

0

...

@InitBinder 
public void initBinder(final WebDataBinder binder) { 
    binder.registerCustomEditor(Date.class, new DateTimeEditor(); 
} 
+0

感謝。コントローラへのリクエストにエディタを使用するには、プロパティエディタをコントローラwebdatabinderに登録する必要があります。 – JCS

関連する問題