从xsd:date中删除时间组件

时间:2013-07-10 21:47:29

标签: date service web xsd

我正在使用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。我该如何摆脱它?

1 个答案:

答案 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);
    }