我正在使用Apache Axis构建Web服务的服务器端。该服务执行一些逻辑并向调用者返回日期。要求是返回的日期应采用YYYY-MM-DD格式。 (比如2013-07-01)。值中不应该有任何时间组件。
我通过wsdl2java工具运行WSDL。这生成了Skeleton和输入/输出参数java类。我使用ADB进行绑定。我看到对于在XSD中定义为xsd:date的类型,相应生成的java数据类型是java.util.Date。
在服务逻辑中,我在代码中使用java.util.Date填充了日期字段。我看到Web服务响应也包括时间组件。类似的东西:
2013-07-10-04:00 2014-06-30-04:00
我不希望在值中使用:00。我该如何摆脱它?
答案 0 :(得分:0)
Check out this link about how to use an xml adapter
您可以在jaxb定义中使用适配器来定义返回日期的方式。您还需要在xsd:date定义中指向此适配器。 使用@XmlJavaTypeAdapter annotation
import java.util.Date;
import java.text.SimpleDateFormat;
import javax.xml.bind.annotation.adapters.XmlAdapter;
public class DateAdapter extends XmlAdapter<String, Date> {
// the desired format
private String pattern = "MM/dd/yyyy";
public String marshal(Date date) throws Exception {
return new SimpleDateFormat(pattern).format(date);
}
public Date unmarshal(String dateString) throws Exception {
return new SimpleDateFormat(pattern).parse(dateString);
}