Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring joda、jackson、hibernate中的日期时间格式_Spring_Hibernate_Spring Mvc_Jackson_Jodatime - Fatal编程技术网

Spring joda、jackson、hibernate中的日期时间格式

Spring joda、jackson、hibernate中的日期时间格式,spring,hibernate,spring-mvc,jackson,jodatime,Spring,Hibernate,Spring Mvc,Jackson,Jodatime,如何在joda、jackson和hibernate中设置日期时间格式 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")

如何在joda、jackson和hibernate中设置日期时间格式

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 ) { ..
我的Spring控制器在反序列化eventDateTime中总是失败,因此我得到的响应错误为400“客户端发送的请求在语法上不正确”

如果我将日期时间格式更改为:

{“eventDateTime”:“2014-05-19T14:8”}

它是有效的。

您的
{“eventDateTime”:“2014-05-19T14:8”}
示例之所以有效,是因为它采用ISO 8601日期格式。我建议您将datetime格式设置为标准格式,因为您已经看到Jackson可以处理它

我猜您正在检索此文件并使用JavaScript将其发送回服务器。如果是这样,您应该知道JS可以解析日期,只要它是几种格式中的一种。(请参阅,特别是dateString参数),然后可以使用JavaScript对其进行格式化,以便于显示

只要JavaScript知道这是一个日期,它就应该以它可以识别的格式将它发送回Jackson(不确定这是从纪元开始的毫秒,
ISO 8601
还是其他什么,但它可以工作)。如果JavaScript将日期视为字符串,那么它将作为字符串传回,Jackson可能不知道如何处理它


您可以使用命令强制Jackson处理自定义日期格式。有关如何实现的详细信息,请参阅。

我需要jquery插件中的“dd/MM/yyyyy”格式的日期,该插件与“yyyy-MM-dd”不兼容,任何格式之间的javascript转换都是浪费。我认为问题出在netween joda和jackson的集成中,因为@JsonFormat(pattern=“dd/MM/yyyyy't'HH:MM”)适用于java.util.Date类型。正如我在回答的最后提到的,请尝试JsonDeserializer,它采用泛型。可以为joda DateTime对象指定任何转换策略。