2

jaxb/jackson の wink で Enum 型にいくつかの検証を実装しようとしています。

いくつかの値を取る列挙型があります。nullを許可したい、つまりxml/jsonに設定したくないが、無効な値をチェックしてエラーを出したい。

デフォルトでは、enum にない値を指定すると jaxb/wink は単に null を返すことがわかったので、セッターを使用して入力の検証を許可しようとしました。Level.valueOf(newLevel) を使用して、指定された文字列を値に変換しようとすると、例外がスローされ、スタック トレースと http エラーが発生します。これは問題ありませんが、私が本当に必要としているのは、エラー応答のマーシャリングをある程度制御できるカスタム例外です。投げてみたけどウインク(だと思う)に飲み込まれてしまう。

enum Level {BASIC, ADVANCED};

@XmlAttribute
public void setLevel(String newLevel) throws MyException {
    if (newNodeLevel != null) {
        try {
            this.level = Level.valueOf(newLevel);
        } catch (IllegalArgumentException e) {
            throw new MyException("level invalid");
        }
   }
}

例外ではなくスロー可能を使用する以外に、これを達成する方法はありますか?

4

0 に答える 0