2017-03-25 8 views
1

SpringBootコントローラは、Beanクラスである@RequestBodyを消費します。たとえば、フィールドのリストを持つクラスバスケットです。これらのフィールドの一部は読み取り専用で、ユーザーが更新要求を送信しようとすると例外がスローされます。SpringBootコントローラで要求ボディのフィールドを検証する方法(Jacksonをカスタマイズする)

私はカスタム@ReadOnlyアノテーションを使用して、Basketクラスの読み取り専用フィールドをマークします。 JacksonがオブジェクトBasketを構築するときにJacksonをカスタマイズする必要があります。注釈付きのBeanを解析し、受信JSONに読み取り専用フィールドが含まれている場合は例外をスローする必要があります。

JSR-303 Bean Validationに関するアドバイスをしないでください。

答えて

0

カスタムデシリアライザを作成し、次のコードを使用してアノテーションにアクセスし、ロジックを書き込んで例外をスローすることができます。

for (Field f: Basket.class.getFields())  { 
       ReadOnly readOnly = f.getAnnotation(ReadOnly.class); 
       if (readOnly != null) 
        // your logic can go here. 
       } 
関連する問題