相关疑难解决方法(0)

如果秒是00,则java.time.LocalDateTime转换问题

我的Web应用程序使用Apache CXF和JAVA8,并且如果用户将xs:datetime输入(秒00)发送为,则响应以下错误

<urn1:dateTimeVal>2016-04-29T20:00:00</urn1:dateTimeVal>
Run Code Online (Sandbox Code Playgroud)

错误:

org.apache.cxf.interceptor.Fault:编组错误:cvc-datatype-valid.1.2.1:'2016-04-29T20:00'不是'dateTime'的有效值。

我进行了调试和分析,如果用户发送dateTimeValas,2016-04-29T20:00:00则传递输入的CXF验证并将XML值取消编组java.time.LocalDateTimeas 2016-05-05T20:00,并且在返回响应时,由于秒损失part(00)而发生了编组错误。

任何帮助/提示表示赞赏。

PS:您可以尝试以下代码段:

   java.time.LocalDateTime dt= java.time.LocalDateTime.of(2016, Month.MAY, 5, 20, 00, 00);
   System.out.println(dt);
Run Code Online (Sandbox Code Playgroud)

注意:上面的代码示例仅用于理解打印日期时间值。但是,Web应用程序中期望的实际返回类型是java.time.LocalDateTime

预期输出:2016-05-05T20:00:00

实际产量 :2016-05-05T20:00

编辑:该字段的绑定(JAXB)内容是:

 @XmlElement(required = true, type = String.class)
    @XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
    @XmlSchemaType(name = "dateTime")
    @Generated(value = "com.sun.tools.xjc.Driver", date = "2016-05-03T05:28:57+05:30", comments = "JAXB RI v2.2.11")
    @NotNull
    protected LocalDateTime dateTimeVal;
Run Code Online (Sandbox Code Playgroud)

AND LocalDateTimeAdapter文件为

 import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    import java.time.format.DateTimeParseException;
    import java.time.temporal.TemporalAccessor;
    import …
Run Code Online (Sandbox Code Playgroud)

datetime cxf java-8

7
推荐指数
2
解决办法
2726
查看次数

标签 统计

cxf ×1

datetime ×1

java-8 ×1