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 に答える