Grails 2.3.4 を使ってます。
Domain で、java.util.Date 型で宣言している項目で controller 側で Dateオブジェクトを入れてもエラーとなる場合。
エラーとしては、typeMismatch となっています。
最初に、new Domain(params) をした時点で String が入ると解釈されてしまうのでしょうかね。
1 2 |
domain.clearErrors() domain.validate() |
とすれば問題ないです。
初めてコメントいたします。いろいろ検索してこちらのサイトにたどり着きました。
ご記載の通りの症状が出てしまい、なかなか解決せず困っております。
まだGrailsの知識もないため勉強中ですが、このサイトに書いてあることをいろいろやっています。
質問がございます。
上記の
domain.clearErrors()
domain.validate()
の文章はdomainController内の create内に書けばいいのでしょうか、それとも
editのところでしょうか?もしくは全然別の場所?
Dateフィールドにjquery uiでカレンダーのデータピッカーで入力しております。
うまく登録できたり、typeMismatch エラーが出たりと違いが判りません。
よろしくお願いいたします。
domain.clearErrors()
domain.validate()
は、ドメインにデータを入れる直前です。
>の文章はdomainController内の create内に書けばいいのでしょうか、それとも
>editのところでしょうか?もしくは全然別の場所?
上の文面からの推測ですが、 controller 内のメソッドの宣言は以下のような形でしょうか?
def edit() {
の形にして、
def domain = new Domain(params)
もしくは、Data binding自体をやめて
def domain = new Domain()
domain.xxxx = xxxxx
の形で一つづつ入れる。
Datapicker を作る際に
$(‘#somedate’).datepicker({ dateFormat: ‘yy/mm/dd’ });
のようにしてみてはどうでしょうか。
上記のいづれかを試してみてはどうでしょうか
ありがとうございます。
_header.gspの変更だけで済むためご指摘の2.のDatePickerで行い、
無事出来ました。
1.のやり方はある意味昔のJavaぽくてわかりやすかったです。
grailsはわかりやすいし、生産性も非常に高いように思いますが、いかんせん分からないときはどうすればいいのか想像がつきません。
まだまだGrails的に考えられていないということでしょうね。
ていねいな解説どうもありがとうございました。
これからも参考にさせていただきます。