0

というユーザードメインを持つアプリケーションがSecUser(Spring Secrity Coreのセキュリティユーザークラス)から拡張されています。このドメイン(ユーザ)では、サーバ項目があり、そのうちの1つは生年月日です。足場はg:datePickerというタグを作成しますが、スタイルは気に入らないです。ドメイン内の日付フィールドとg:textFieldタグがGrailsで動作しません

例:BoostrapのDatepicker(http://www.eyecon.ro/bootstrap-datepicker/)ですが、このライブラリは入力タイプ= "text"フィールドを使用しています。私の見解では

.gsp)私は、テキスト入力を置けば、私は値がnullのuserInstance.birthDateを取得するときに、保存して、更新アクションがあるため、私のコントローラでは動作しません。

g:datePickerタグを入力すると、コントローラが正しく値を取得します。

どうすればこの問題を解決できますか?おかげさまで

EDITEDは:

私の見解で日付ピッカーブートストラップのコード:今すぐ

<div class="input-group date date-picker" data-date-format="dd-MM-yyyy" data-date-end-date="+0d"> 
     <input type="text" id="birthDate" name="birthDate" value="${formatDate(format:'dd-MM-yyyy',date: userInstance?.birthDate)}" class="form-control form-shadow"/> 
     <span class="input-group-btn"> 
      <button class="btn default" type="button"> 
        <i class="fa fa-calendar"></i> 
      </button> 
     </span> 
</div> 
<span class="help-block"> 
    <h5> 
     <g:message code="custom.date.picker.description" default="Select a date"/> 
    </h5> 
</span> 

、私はparams.birthDateと私のコントローラに値を取得することができますが、次のエラーが表示されます。

Class java.text.ParseException 
Message Unparseable date: "01-04-2016" 

解決:

解決策は、Datepicker for Bootstrapライブラリで正しく解析されています。このライブラリは、異なるパーサーを使用します。たとえば、Grailsの '01-04-2016'は 'dd-MM-yyyy'ですが、このライブラリの 'dd-mm-yyyy'です。

このリンクでのフォーマットが表示される: https://bootstrap-datepicker.readthedocs.org/en/latest/options.html#format

を加えて、Config.groovyに次の行を追加する必要がある:

grails.databinding.dateFormats = [ 'dd-MM-yyyy', 'yyyy-MM-dd', 'yyyy-MM-dd HH:mm:ss.S' ]

答えて

1

ストレートフォワード溶液がですコントローラアクションの日付フィールドをマップします。

def save(User user) { 
    .... 
    user.birthDate = new SimpleDateFormat('dd-MM-yyyy').parse params.birthDate 
    ... 
} 
+0

コントローラで同じ値を取得しているため、この解決策は機能しません:null。私はlog.error(userInstance.birthDate)と一緒に見ることができます。私は入力のコードを追加するために私の質問を編集しました。 –

+0

@JesúsIglesias入力フィールドに 'name'属性がありません。従ってコントローラ内では「ヌル」である。それは '' – injecteer

+0

になります。私は、コントローラ内の値を得ることができますが、私は次のエラーを取得する: クラス java.text.ParseException メッセージ 解析できない日:「2016年1月4日は」 –

関連する問題