0

Spring MVC 3.1.0 プロジェクトがありContentNegotiatingViewResolver、特定のエンドポイント (を使用) の JSON 出力を自動的に生成するように Bean を構成しましたorg.springframework.web.servlet.view.json.MappingJacksonJsonView

model.addAttribute("foo", fooService.getFoo());JSON出力に表示したくないデータを(経由で)JSPページに追加するコントローラーメソッドがいくつかあります。

サービス メソッド( を返す)@JsonIgnoreに注釈を追加しようとしましたが、機能しません。そのコントローラーを押すと、JSON 出力で foo オブジェクトがマーシャリングされているのをまだ確認できます。getFoo()Map<String, String>

JsonIgnoreこれを達成する別の方法を提案したり、注釈が機能しない理由を教えてもらえますか?

4

2 に答える 2

2

MappingJacksonJsonViewモデルのすべてのコンテンツを json にシリアル化します。つまり、モデル オブジェクトに配置したすべてのオブジェクトです。そのため、サービス メソッドの 1 つを でマークしたかどうかは問題ではありません@JsonIgnore。それへの呼び出しmodel.addAttribute("foo"..がシリアル化されるためです。@ResponseBodyモデル属性を追加しないか、シリアル化されている特定の応答オブジェクトを制御できるようにすることで修正できます。

もう 1 つのオプションは、構成時に使用する正確なキーを指定することですMappingJacksonJsonView

<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" name="jsonView">
<property name="modelKeys">
   <set>
    <value>model1</value>
    <value>model2</value>
   </set>
</property>
</bean>
于 2012-11-28T00:12:42.387 に答える