Я читал Spring 3.0 Documentation и Blog Posts (followups) о том, как создать службы стиля REST с помощью Spring MVC, но я не могу найти какой-либо рабочий пример о том, как использовать ContentNegotiationViewResolver. У меня есть тестовый контроллер, как этотЕсть ли пример использования Spring 3.0 для ведения контента для служб RESTful?
@Controller
public class IndexController implements Serializable
{
@RequestMapping("/index")
public ModelAndView index()
{
ModelAndView mav = new ModelAndView();
mav.setViewName("index");
return mav;
}
}
и пытались использовать что-то вроде этого
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="xml" value="text/xml" />
<!--
<entry key="json" value="application/json"/>
-->
</map>
</property>
<property name="defaultContentType"><value>text/html</value></property>
<property name="defaultViews">
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" />
</property>
</bean>
</property>
<property name="viewResolvers">
<list>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/pages/" />
<property name="suffix" value=".jsp" />
</bean>
</list>
</property>
</bean>
пытается решить точку зрения в соответствии с расширением в URL (Я хочу поддержать HTML, XML и .json). Представление .html работает (также показывает правильное представление JSP), но ничто другое, что я пытался использовать для запуска JSON и XML, похоже, не работает (настройка свойства defaultViews была всего лишь одной из вещей, которые я пробовал). Кажется, что не так много читающего материала. Есть ли у кого-нибудь опыт или примеры?
Спасибо, тип содержимого был действительно неправильным, но теперь я получаю исключение, говорящее «Невозможно найти объект для сортировки в модели {}». Правильно ли настроен XML-маршаллер (я хотел настроить XStream для создания JSON тоже). – Daff
@Daff Это потому, что ваша модель пуста – axtavt
Действительно, вам нужно настроить свою модель, чтобы «MarshallingView» знал, что с этим делать. Это, однако, представляет собой совершенно другой вопрос, поэтому, пожалуйста, примите это, как описано, и переходите к следующему. – skaffman