java - Spring MVC 3.2.1 中未出现 Json 响应

标签 java spring spring-mvc

我正在使用 soring MVC 3.2.1。我正在使用一个应该返回 json 的 Controller ,我也包含了 jackson jar。但是未返回 json。它给出错误 此请求标识的资源仅能够根据请求“accept” header ()生成具有 Not Acceptable 特征的响应。

@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>

请帮忙,在 3.0 中无需设置 contentNogotiation Manager 即可正常工作,但在最新版本的 spring MVC 中则不行

最佳答案

听起来您在发出 http 请求时需要在 header 中发送“Accept= application/json”。

您还可以通过创建 ObjectMapper 对象并检查返回类型上的 canSerialize(class) 来检查是否可以获取 json 以及您的 jar 是否已正确安装。

您如何发布数据?

删除 "products = "application/json;charset=UTF-8""也可以解决问题,但如果您想包含该行,则需要在 http 请求中包含 Accepts header 。

关于java - Spring MVC 3.2.1 中未出现 Json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15718913/

相关文章:

java - 如何与多线程服务器上的所有线程通信?

java - Mongodb,仅查找所有最新的映射记录

java - org.hibernate.TypeMismatchException : Provided id of the wrong type for class

java - 无法使用 Spring Batch 框架连接到 Oracle 数据源

java - 从数据库中删除记录的 Controller 方法应采用哪些参数?

java - 从jsp将多行插入数据库mysql

java - 膨胀布局的按钮 onClick 监听器不工作

java - HeadersTooLargeException - 响应 header

mysql - 如何设置由单独表上的多个外键引用的 Hibernate 实体?

java - SpringMVC 注解验证 - DataBinding 数据类型