2017-03-09 5 views
1

これは簡単だと思います。 My Grails 3.2.5 JsonViewsを使用するRESTサーバーは、クライアントのタイムゾーンに変更されていないクライアントに日付を返す必要があります。テストのために、私のクライアントとサーバーはどちらも東部時間にあるので、違いはありません。しかし、私が見ているのは、発信JSONの日付文字列がGMTに調整されているため、5時間かかることです。Grails 3 JSON日付のシリアル化

私はブートストラップに日付マーシャラーを登録することで、通常のJSONのためにこの調整を倒すことができます。

JSON.registerObjectMarshaller(Date) { 
    String fmt = "yyyy-MM-dd'T'HH:mm:ss'Z'" 
    return it.format(fmt) 
} 

しかし、これはJsonViewを介して送られたドメインクラスの日付には影響を与えません。私は、ジャクソン・デイト・シリアライザを変更するためのグローバルな手段を実装しようとしましたが、これまでのところ有用ではありません。これはどうすればいいですか?ドキュメンテーションとサンプルは、矛盾して混乱しています。

私のビルド設定:

apply plugin:"org.grails.plugins.views-json" 
compile "org.grails.plugins:views-json:1.1.2" 

Thxを、J

+0

"マニュアルおよび実施例は、矛盾と混乱しています。" grails-viewsに関するgithubの問題で、ここで何を意味するのかを指摘できれば、改善することができます。 –

答えて

1

あなたのコード例では、JSON変換APIを使用している、JSONビューとは何の関係もありません。である、コンバータを

model { 
    Book book 
} 

json { 
    published book.published.format(...) 
} 

か、現在のGrails-ビューの現在のリリース候補(RC1)を使用して実装します。

はあなたのビューを自分で管理する必要があるのいずれか、あなたが探しているものを達成するために、ここで説明: http://views.grails.org/1.2.x/#_custom_converters

編集:ビューの1.2.xの中にデフォルトのタイムゾーンを設定するには、カップルの設定オプションを使用すると、使用することができますがあります。

​​

grails.views.json.generator.dateFormat: "yyyy-MM-dd'T'HH:mm:ss'Z'"

+0

私が示したコードはJSONビューとは何の関係もないことを理解していますが、少なくともJSONコンバータを通過するすべての問題については一般的に解決できることを示しています。 JSONビューは別の問題です。私はRC1のバージョンを調べ、それが実り多いものかどうかを確認して報告します。 – Jay

+0

運がありません。私は変換された、簡単なものを実装しましたが、grails warファイルのどこでJsonGenerator $ Converterを終了すべきですか?私は "src/main/resources/META-INF/services/grails.plugin.json.builder.JsonGenerator $ Converter"と思っていたが、コンバータは決してアクセスされていない。 – Jay

+0

Hmmm。私はコンバータが必要ありません。私がする必要があるのは、JsonViewGeneratorConfigurationで "GMT"に設定されているtimeZoneを変更することだけです。これはconfigによって上書きできますか? – Jay