@JsonView(...)
Spring MVC で単一のビュー クラスを静的に定義するために、コントローラー メソッドにアノテーションを付けることが可能であることを認識しています。残念ながら、これは、可能性のあるビューの種類ごとに異なるエンドポイントが必要であることを意味します。
私は他の人が以前にこれを尋ねたのを見ます。このアプローチはうまくいくかもしれませんが、Spring には多くの場合、同じことを行う多くの方法があります。いくつかの内部構造について少し知識があれば、ソリューションが最初に表示されるよりもはるかに単純になることがあります。
現在のプリンシパルに基づいて適切なビューを動的に選択できる単一のコントローラー エンドポイントが必要です。適切なビュー クラスまたはインスタンスを直接Model
含む属性を持つを返すことは可能ですか?MappingJacksonValue
org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter#writeInternal
使用するビューを決定するコードのスニペットがあることがわかります。
if (value instanceof MappingJacksonValue) {
MappingJacksonValue container = (MappingJacksonValue) object;
value = container.getValue();
serializationView = container.getSerializationView();
}
これは由来のようですが、正しいビューを選択するorg.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyAdvice#beforeBodyWriteInternal
ために必要な情報を含む特定の値を返すだけでこれを回避できる方法があるかどうか、うまくいきません。Jackson2HttpMessageConverter
どんな助けでも大歓迎です。