2014-05-19 4 views
0

최대 절전 모드, 잭슨은 최대 절전 모드.날짜가, 잭슨은 joda에 서식 날짜를 설정하는 방법

import org.joda.time.DateTime; 
import com.fasterxml.jackson.annotation.JsonFormat; 
//other imports... 

@Entity 
public class Example { 

    @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime") 
    @JsonFormat(pattern = "dd/MM/yyyy'T'HH:mm") 
    private DateTime eventDateTime;  

//getters setters 
} 


//registration joda jackson module: 
    ObjectMapper objectMapper = new ObjectMapper(); 
    objectMapper.registerModule(new JodaModule()); 
    objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false); 
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy'T'HH:mm");   
    objectMapper.setDateFormat(df); 


//If I send JSON like: 
{"eventDateTime": "19/05/2014T14:8"} 

//my spring controller: 
@RequestMapping(method = RequestMethod.POST)  
    public void saveExample(@RequestBody Example example) { .. 

내 봄 컨트롤러는 항상 내가 응답 오류 (400) 받고 있어요 그래서 "클라이언트가 보낸 요청의 구문이 잘못되었습니다"드 - 직렬화 eventDateTime에 실패합니다.

나는에 날짜 형식을 변경하는 경우 :

{"eventDateTime": "2014-05-19T14:8"}

과 작동합니다.

답변

0

당신의 {"eventDateTime": "2014-05-19T14:8"} 예를 작동하는 이유는 ISO 8601 날짜 형식에 있다는 것입니다. 잭슨이 처리 할 수 ​​있다는 것을 이미 알고 있으므로 datetime 형식을 ISO 8601 표준으로 설정하는 것이 좋습니다.

나는 당신이 검색하고 자바 스크립트로 서버에 다시 보내는 같은데요. 그렇다면 JS가 몇 가지 형식 중 하나 인 한 JS를 구문 분석 할 수 있다는 것을 알아야합니다. (the Date object 및 특히 dateString 매개 변수를 참조하십시오.) 그런 다음 JavaScript를 사용하여 표시하고자하지만 형식을 지정할 수 있습니다.

JavaScript는 날짜를 알고있는 한 인식 할 수있는 형식으로 Jackson으로 다시 전송해야합니다 (기원 이후 밀리 초인지 여부는 확실하지 않음, ISO 8601 또는 무엇이 작동하는지). JavaScript가 날짜를 문자열로 처리하면 문자열로 다시 전달할 것이고 Jackson은 그 문자열을 어떻게 처리해야할지 모를 것입니다.

당신은 JsonDeserializer를 사용하여 사용자 지정 날짜 형식을 처리하기 위해 잭슨을 강제 할 수 있습니다. 구현 방법에 대한 자세한 내용은 https://stackoverflow.com/a/5598277/965150을 참조하십시오.

내가 작동하지 않는 이유는 jQuery 플러그인에서 "일/월/년"형식의 날짜를 필요
+0

은 'YYYY-MM-DD'과 형식 사이의 자바 스크립트의 모든 변형은 낭비입니다. java.util.Date 유형에 작동합니다 –

+0

나는 @JsonFormat (패턴 = "mm DD는/MM/yyyy'T'HH")가 있기 때문에 그 문제는, 통합 netween의 joda와 잭슨에 생각합니다. –

+0

내 대답의 마지막 부분에서 언급했듯이 JsonDeserializer를 사용해보십시오. joda DateTime 객체에 대해 원하는 변환 전략을 지정할 수 있습니다. – Planky

관련 문제