3

「foobar」というdatePickerがあるとしましょう:

<g:datePicker name="foobar" value="${new Date()}" precision="day" />

この日付ピッカーの送信された値を読み取るにはどうすればよいですか?

機能するが、いくつかの望ましくない副作用がある1つの方法は次のとおりです。

def newObject = new SomeClassName(params)
println "value=" + newObject.foobar

この方法では、送信されたすべてのフィールドが newObject に読み込まれますが、これは避けたいことです。「foobar」フィールドの値だけに興味があります。

私が最初にこれを行うことができると想定した方法は次のとおりです。

def newObject = new SomeClassName()
newObject.foobar = params["foobar"]

しかし、Grails は自動的に foobar フィールドを Date() オブジェクトに変換するようには見えません。

更新: Grails JIRAに追加情報があります。

4

4 に答える 4

4

コマンドオブジェクトのイディオムを使用します。あなたの例の場合、あなたのフォームがアクションを呼び出すと仮定しますhandleDate。コントローラの内部:


def handleDate = { FoobarDateCommand dateCommand ->
    def theNextDay = dateCommand.foobar + 1
}

これがFoobarDateCommand。ビューと同じようにフィールドに名前を付ける方法に注意してください。


class FoobarDateCommand { 
    Date foobar 
}

コマンドオブジェクトは、各フォームのすべての検証タスクをカプセル化するための便利な方法であり、コントローラーを小さく保つことができます。

于 2009-02-11T02:26:20.650 に答える
2

g:datePicker 値の読み取りは、Grails 1.2 で非常に簡単になりました (リリース ノートを参照)。

より良い日付の解析

タグから日付を送信する場合、Date オブジェクトの取得は、名前で params オブジェクトから検索するのと同じくらい簡単になりました (例: params.foo )

于 2009-12-26T23:50:01.123 に答える
0

パラメータが「構造体」であると言うとき、これはその値を表すためにいくつかのパラメータがあることを意味します。あなたの場合、次のようなものがあります。

  • params["foobar_year"保存年
  • params["foobar_month"]月を保存
  • params["foobar_day"]保存日

それらを取り出して、好きなことをしてください:)

于 2009-02-11T09:30:24.827 に答える