/ / Jak korzystać z ContentNegotiatingViewResolver dla text / html lub application / json? - java, rest, spring-mvc, serwlety

Jak korzystać z ContentNegotiatingViewResolver dla text / html lub application / json? - java, reszta, spring-mvc, servlets

Stworzyłem usługę RESTful z SpringMVC. Istnieje kilka samouczków i działało dobrze. Teraz aplikacja powinna w niektórych przypadkach odpowiadać aplikacją / json lub RESTful, aw innych przypadkach normalnym ViewResolvers i text / html (.jsp).
Myślałem, że w takim przypadku najlepiej zastosować ContentNegotiatingViewResolver (prawda?).

Moje pytanie teraz: jakiego widoku / serwletu / * powinienem użyć do bezpośredniego wyświetlenia json (wynik REST)? To jest mój servlet.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package="com.atrioom" />

<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="html" value="text/html" />
</map>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</list>
</property>
</bean>

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

Dla każdego żądania serwlet szuka .jsp plik do wyświetlenia. To jest za text/html i dla application/json. Chcę, aby zachowywał się, gdy wyświetlał (jsp) widok text/html jest wywoływana, a bezpośrednie wyjście Json kiedy application/json jest nazywany. Miałem to działające, gdy wykonałem usługę tylko REST. Plik jsp nie był wymagany, aplikacja właśnie zwróciła dane w formacie json.
Nie wiem, jak powiedzieć Negocjatorowi, co robić w sprawie JSona. Czy potrzebuję specjalnego Resolvera REST, którego potrzebuję? Czy ktoś może rzucić nieco światła?

Z poważaniem,
Alex

Odpowiedzi:

0 dla odpowiedzi № 1

Musisz skonfigurować MappingJackson2HttpMessageConverter w twoim widoku właściwość resolvera.

Skonsultuj API tutaj