0

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

4

1 回答 1

0

查看有关如何使用 xml 适配器的链接

您可以在 jaxb 定义中使用适配器来定义您希望如何返回日期。您还需要在 xsd:date 定义中指向此适配器。使用@XmlJavaTypeAdapter 注解

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);
    }   
于 2013-07-10T21:58:12.347 回答