Я пытаюсь создать веб-сервер, который может сериализовать объект в JSON и XML.Поскольку я интегрировал Джексона (используя пример проекта), я могу получить доступ к JSON-сериализованному объекту через мой интерфейс REST, но я бы тоже хотел получить XML.
this ...
@Controller
@RequestMapping("/main/ajax")
public class AjaxController {
@RequestMapping(value = "/blah", method = RequestMethod.GET, headers = "Accept=application/xml")
public @ResponseBody List<String> blah(@RequestParam(value="input") String input){
List<String> stringList = new LinkedList<String>();
stringList.add("i");
stringList.add("am");
stringList.add("an");
stringList.add("json object");
stringList.add(input);
return stringList;
}
}
с этим запросом:
http://localhost:8080/spring-json/krams/main/ajax/blah?input=foobar
выводит этот вывод:
["i","am","an","json object","foobar"]
Любые подсказки?
ОБНОВЛЕНИЕ # 1: Я реализовалContentNegotiatingViewResolver ...
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="defaultViews">
<list>
<!-- JSON View -->
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
<!-- XML View -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" />
</constructor-arg>
</bean>
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
</bean>
<!-- If no extension matched, use JSP view -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="order" value="2" />
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
Как теперь выбрать XML или JSON?localhost: 8080 / spring-json / sometestclass / status?localhost: 8080 / spring-json / sometestclass / status.xml?localhost: 8080 / spring-json / sometestclass / status.json?
Ни один из приведенных выше примеров не работает, но я могу принудительно настроить формат ответа с помощью заголовка Accept "application / xml" или "application /json "... если я сделаю следующее ...
@RequestMapping(value = "/status", method = RequestMethod.GET, headers = "Accept=application/xml, application/json")
public @ResponseBody Web_ServerStatus isServerAlive() {
Web_ServerStatus l_ReturnObj = new Web_ServerStatus();
... я получу только XML обратно.
В чем проблема, с которой я сталкиваюсь?
Заранее спасибо!