8

日付を (文字列として) 送信しています。これをコマンド オブジェクトにマッピングしたいと思います。私はかなり見回しましたが、コマンドオブジェクト内でこのマッピングを実際の日付に行う方法についての優れたリソースは見つかりませんでした。

コントローラー自体でこれを行う場合、次のようにするだけで済みますが、コマンド オブジェクトに簡単にマップすることはできません。

def endDate = params.date('endDate', 'MM/dd/yyyy')

私のコマンド オブジェクトの場合、取得できる最も近い方法は、日付オブジェクトのゲッターとセッターをオーバーライドすることです。どちらもオーバーライドする必要があります。そうしないと、セッターは使用されません。これは私が最初に試したことです(文字列を日付に設定しますが、日付を取得します)。したがって、これはセッターを使用しません。

@grails.validation.Validateable
class TaskCreateCommand {

    Date startDate


    public void setStartDate(String dateStr){
        this.start = Date.parse('MM/dd/yyyy', dateStr)
    }

}

これは実行時の問題を引き起こしませんが、実際の Date オブジェクトを引き出すことができないため役に立ちません。

@grails.validation.Validateable
class TaskCreateCommand {

    Date startDate


    public void setStartDate(String dateStr){
        this.start = Date.parse('MM/dd/yyyy', dateStr)
    }

    public String getStartDate(){
        return start.toString()
    }
}
4

3 に答える 3