Каков минимум, необходимый для получения Spring mvc 3.1 для вывода ответов JSON и XML? - PullRequest
0 голосов
/ 22 февраля 2012

Я включил Джексона Маппера в файл pom

        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.2</version>
        </dependency>

Также для xml я включил в мой файл pom и весенний oxm, и xstream

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>3.1.0.RELEASE</version>
        </dependency>

         <dependency>
            <groupId>com.thoughtworks.xstream</groupId>
            <artifactId>xstream</artifactId>
            <version>1.4.2</version>
        </dependency>

И вот мой весенний конфигурационный файл MVC:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:oxm="http://www.springframework.org/schema/oxm"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
          http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
          http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">


    <mvc:resources mapping="/static/js/**" location="/static/js/"/>
    <mvc:resources mapping="/favicon.ico" location="/favicon.ico"/>

    <mvc:annotation-driven />
    <context:component-scan base-package="com.xyz.web.controllers"/>

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

И всякий раз, когда я пытался получить ответ json или xml, я получал это

 DEBUG o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - Resolving exception from handler [public com.xyz.web.controllers.User com.xyz.web.controllers.UserController.get(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)]: org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

Любая помощь очень ценится!

Ответы [ 3 ]

0 голосов
/ 29 февраля 2012

Какие аннотации у вас есть для методов вашего контроллера.

У меня есть следующее, и все хорошо:

@RequestMapping("carrierCompanies_json")
@ResponseBody
public Map<String, String> getValuesAsJSON() {
    return shipperService.getInfoForUser(getUser());
}
0 голосов
/ 24 августа 2012

Что я сделал, так это:

Я просто добавил зависимость Джексона в свой файл pom, а затем добавил @ResponseBody:

@RequestMapping(value = "/test", method = RequestMethod.GET)
@ResponseBody
public Map<String, String> getTestValue() {
    Map<String, String> map = new HashMap<String, String>();
    map.put("1", "dfd");
    map.put("2", "dfd");
    map.put("3", "dfd");
    map.put("4", "dfd");
    return map;
}

И тогда я получил ожидаемый результат: { "1": "dfd", "2": "dfd", «3»: «dfd», "4": "dfd" }

Кстати, я использую пружинный MVC 3.1.

Прежде чем использовать Spring mvc 3.1, я использовал 3.0, и когда я делал выше, мне также пришлось добавить следующее .xml файл:

<beans:bean id="stringHttpMessageConverter"
    class="org.springframework.http.converter.StringHttpMessageConverter" />

<beans:bean id="jsonHttpMessageConverter"
    class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />

<beans:bean id="methodHandlerExceptionResolver"
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver">
    <beans:property name="messageConverters">
        <beans:list>
            <beans:ref bean="stringHttpMessageConverter" />
            <beans:ref bean="jsonHttpMessageConverter" />
        </beans:list>
    </beans:property>
</beans:bean>

Надеюсь, это поможет вам.

0 голосов
/ 22 февраля 2012

Check Spring-Json-View , делает его очень простым в использовании json с spring-mvc, а также имеет поддержку по умолчанию Xstream

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...