1

XMLAdapter を使用して、日付をマーシャリングおよびアンマーシャリングしています。アンマーシャラーで、REST サービスから提供されている形式を確認したいと考えています。フォーマットが間違っている場合は、独自の例外をスローしたいと考えています。ただし、expetion は食い尽くされており、アプリケーションは続行されます。解決策がValidationEventHandlerにあることは知っていますが、それを正確に使用する方法を理解することはできません。使い方の参考にしてください。私の XMLAdapter コードはこのようなものです

public class DateFormatAdapter extends XmlAdapter<String, Date> {

@Override
public String marshal(Date arg0) throws Exception {

    return arg0.toString();
}

@Override
public Date unmarshal(String arg0) {
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
    df.setLenient(false);
    Date startDate = null;
    try {
        startDate = df.parse(arg0);
        df.format(startDate);

    } catch (ParseException e) {
        // throw custom exception from here
    }

    return startDate;
}

}

4

1 に答える 1

1

それは本当だ!XMLAdapter の実装内で例外をスローすると、例外がキャッチされ、サービスが続行されます。応答のステータスは、Status.INTERNAL_SERVER_ERRORまたは他の何かに設定されません。データがマッピングされていないため、応答に目的のデータが含まれていません。データ形式が一致しない場合に応答コードに影響を与えたい場合は、データ エンティティ自体の中で例外をスローする必要があります。あなたの場合、 Date を拡張する CustomDate クラスを作成し、コンストラクターから検証メソッドを呼び出す必要があります。さらに、apdapter クラスはデータの検証を行うとは見なされないため、カスタムの日付クラスとオプションの検証プロキシを使用したアプローチははるかに便利です。

于 2013-06-08T22:19:18.293 に答える