我们要求在从jax-rs webservice返回的XML期间以不同方式格式化日期字段。
离。
Class Dates {
Date date1; //in xml this date must be in format dd-mon-yyyy
Date date2; // in xml this date must be in format dd-mm-yyyy hh:ss sss
}
我们尝试过XMLAdapter,但我们无法确定它是否适用于字段date1或date2
请指教。如果有任何其他过滤器或事件我可以使用
答案 0 :(得分:1)
您可以在日期中使用不同的xsd
类型。
第一次使用
<xs:element name="mySimpleDate" type="xs:date"/>
第二次使用
<xs:element name="myDatetime" type="xs:dateTime"/>
在你的xsd。
答案 1 :(得分:1)
我们尝试过XMLAdapter,但我们无法确定它是否适用于字段 date1或date2
XmlAdapter
是正确的方法,您只需要为每种格式提供一种格式。
@XmlAccessorType(XmlAccessType.FIELD)
class Dates {
@XmlJavaTypeAdapter(MyDateAdapter.class)
Date date1; //in xml this date must be in format dd-mon-yyyy
@XmlJavaTypeAdapter(MyDateTimeAdapter.class)
Date date2; // in xml this date must be in format dd-mm-yyyy hh:ss sss
}
如果要从XML架构生成这些类,请参阅下面链接的答案:
答案 2 :(得分:0)
您可以像创建一个包装器一样创建一个扩展java.util.Date
的新类:
public class CustomDate extends Date {
public CustomDate() {
super();
}
}
将date2
声明为CustomDate,这样您就可以正确解析两个日期。
否则将date2
声明为Timestamp
对象,并为这两种类型创建两个不同的适配器。
从Date
对象开始构建它:
Date d2 = new Date();
Timestamp t2 = new Timestamp(d2.getTime());