[Grails] 日付の入力で、有効な日付ではないとエラーになってます。

Grails 2.3.4 を使ってます。

Domain で、java.util.Date 型で宣言している項目で controller 側で Dateオブジェクトを入れてもエラーとなる場合。

エラーとしては、typeMismatch となっています。
最初に、new Domain(params) をした時点で String が入ると解釈されてしまうのでしょうかね。

とすれば問題ないです。







「[Grails] 日付の入力で、有効な日付ではないとエラーになってます。」への3件のフィードバック

  1. 初めてコメントいたします。いろいろ検索してこちらのサイトにたどり着きました。
    ご記載の通りの症状が出てしまい、なかなか解決せず困っております。
    まだGrailsの知識もないため勉強中ですが、このサイトに書いてあることをいろいろやっています。
    質問がございます。
    上記の
    domain.clearErrors()
    domain.validate()
    の文章はdomainController内の create内に書けばいいのでしょうか、それとも
    editのところでしょうか?もしくは全然別の場所?

    Dateフィールドにjquery uiでカレンダーのデータピッカーで入力しております。
    うまく登録できたり、typeMismatch エラーが出たりと違いが判りません。
    よろしくお願いいたします。

    1. domain.clearErrors()
      domain.validate()
      は、ドメインにデータを入れる直前です。

      >の文章はdomainController内の create内に書けばいいのでしょうか、それとも
      >editのところでしょうか?もしくは全然別の場所?
      上の文面からの推測ですが、 controller 内のメソッドの宣言は以下のような形でしょうか?

      1. Controller側での Data binding をやめて自分で値を入れる
      2. def edit() {
        の形にして、
        def domain = new Domain(params)
        もしくは、Data binding自体をやめて
        def domain = new Domain()
        domain.xxxx = xxxxx
        の形で一つづつ入れる。

      3. Data picker でフォーマットを変える
        Datapicker を作る際に
        $(‘#somedate’).datepicker({ dateFormat: ‘yy/mm/dd’ });
        のようにしてみてはどうでしょうか。

      上記のいづれかを試してみてはどうでしょうか

      1. ありがとうございます。
        _header.gspの変更だけで済むためご指摘の2.のDatePickerで行い、
        無事出来ました。
        1.のやり方はある意味昔のJavaぽくてわかりやすかったです。
        grailsはわかりやすいし、生産性も非常に高いように思いますが、いかんせん分からないときはどうすればいいのか想像がつきません。
        まだまだGrails的に考えられていないということでしょうね。

        ていねいな解説どうもありがとうございました。
        これからも参考にさせていただきます。

ひろあき へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください