0

soring MVC 3.2.1 を使用しています。json を返す必要があるコントローラーを使用しています。jackson jar も含めました。しかし、json は返されません。リクエスト "accept" ヘッダー () に従って受け入れられません。

@RequestMapping(value = "/search.json", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
    protected @ResponseBody
    LoginDto searchDeals(@ModelAttribute Deal deal) {
        /*
         * DealDao dealdao = new DealDao(); List<Deal> deals =
         * dealdao.search(deal);
         */
        return new LoginDto("sdadas", "asdasdas");
    }

構成

<!--
    <bean name="/UploadEmployeeServlet.do"
    class="com.etnow.UploadEmployeeServlet" />
-->
<context:component-scan base-package="com.etnow.*" />
<mvc:annotation-driven
    content-negotiation-manager="contentNegotiationManager" />
<bean id="contentNegotiationManager"
    class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false" />
    <property name="favorParameter" value="false" />
    <property name="ignoreAcceptHeader" value="false" />
    <property name="mediaTypes">
        <value>
            json=application/json
        </value><!--
    -->
    </property>
</bean>

<mvc:view-controller path="/one.do" view-name="SignUp" />
<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

助けてください contentNogotiation Manager を設定しなくても 3.0 では正常に動作しますが、Spring MVC の最新バージョンでは動作しません

4

1 に答える 1

1

httpリクエストを行うときに、ヘッダーで「Accept = application/json」を送信する必要があるようです。

ObjectMapper オブジェクトを作成し、戻り値の型で canSerialize(class) をチェックすることで、json を取得できること、および jar が正しくインストールされていることをチェックすることもできます。

データの掲載はどのように行っていますか?

"produces = "application/json;charset=UTF-8" " を削除することでもうまくいくかもしれませんが、その行を含めたい場合は、http リクエストに accept ヘッダーを含める必要があります。

于 2013-03-30T13:39:29.423 に答える