2017-06-26 1 views
1

によってマップされたフォームから値を受け取るフィールドLocalDateを使用するフォームがあります。 JSONはあるものの:ブートストラップdatepickerとLocalDateの間の1日のシフト

​​

そして私はJDK8用ジャクソン導入しました:Dateの代わりLocalDate

<!-- Jackson dependencies --> 
<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-hibernate5</artifactId> 
    <version>${jacksondatatype.version}</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-jdk8</artifactId> 
    <version>${jacksondatatype.version}</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-jsr310</artifactId> 
    <version>${jacksonjsr310.version}</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.module</groupId> 
    <artifactId>jackson-module-parameter-names</artifactId> 
    <version>${jacksondatatype.version}</version> 
</dependency> 

Tue Jun 27 2017 00:00:00 GMT+0200 (ora legale Europa occidentale) 

LocalDate変数は2017-06-26 これは私のPOJOでありますすべて正常に動作します。
タイムゾーンに問題はありますか?

UPDATE: これは私のSpring構成である:

public MappingJackson2HttpMessageConverter jacksonMessageConverter(){ 
    MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter(); 

    ObjectMapper mapper = new ObjectMapper(); 
    mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); 
    //authomatic registration 
    mapper.findAndRegisterModules(); 

    messageConverter.setObjectMapper(mapper); 
    return messageConverter; 

} 

は、ここで設定することが可能ですか?

答えて

0

私はあなたのジャクソンはGMTを使用するように設定されており、あなたのBookingFormこの

+2

これは質問に答えるかもしれませんが、作業コードの例は、問題を指摘するよりはるかに優れています。その他のヒントは、[回答]ページで確認できます。 – ItamarG3

0

を引き起こしているBSTのような他のものを使用している可能性がありますが、デシリアライザセットでJavaTimeModuleを追加する必要があり、このデシリアライザは、(DateTimeFormatterを持っている必要がありますだと思います入力を解析する)。このテストのために

、私はサンプルクラスを作成しました:

public class JsonLocalDate { 
    private LocalDate date; 

    // getter/setter 
} 

そして:

String json = "{ \"date\": \"Tue Jun 27 2017 00:00:00 GMT+0200\" }"; 

ObjectMapper mapper = new ObjectMapper(); 
JavaTimeModule module = new JavaTimeModule(); 
// create formatter for the pattern 
DateTimeFormatter formatter = new DateTimeFormatterBuilder() 
    // append pattern 
    .appendPattern("EEE MMM dd yyyy HH:mm:ss 'GMT'Z") 
    // create formatter - use English Locale to parse weekday and month name 
    .toFormatter(Locale.ENGLISH); 
// add the LocalDateDeserializer with the custom formatter 
module.addDeserializer(LocalDate.class, new LocalDateDeserializer(formatter)); 
mapper.registerModule(module); 

JsonLocalDate value = mapper.readValue(json, JsonLocalDate.class); 
System.out.println(value.getDate()); 

出力は次のとおりです。

2017年6月27日

+0

こんにちは、私は春の構成を更新しました。その方法を設定するのは可能でしょうか? – luca

+0

'findAndRegisterModules'と一緒にカスタム設定を行う方法がわかりません。多分あなたは別にそれを設定する必要があります。 –

関連する問題