2014-01-29 3 views
0

У меня есть служба REST Webservice, возвращающая int через @responseBody, и я хочу, чтобы этот ответ был в XML, и я не знаю, как этого добиться, несмотря на многие попытки.@ResponseBody не может вернуть XML

Мой контроллер выглядит следующим образом:

@RequestMapping(value = "/UserByAppli", method = RequestMethod.GET) 
@ResponseBody 
public List<Application> getNbUserByAppli() 
{ 
    return this.DAO.getNbUserByAppli(); 
} 

И мое приложение Объект:

@Component 
@XmlRootElement(name="Application") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Application 
{ 
    @XmlElement(name="Nom") 
    private String name; 

    @XmlElement(name="NbUtilisateurs") 
    private int nbUsers; 

    public Application() 
    { 

    } 
    ... 
} 

Он всегда возвращает применение/JSON, и когда я указать заголовок "Accept = приложения/XML" I получить код ответа 406 с org.springframework.web.HttpMediaTypeNotAcceptableException: не удалось найти приемлемое представление в журналах Spring.

Объяснение или направление поиска было бы оценено ...

+0

Вы ничего не возвращаете, что можно объединить в XML. Объекты списка могут быть сопоставлены с XML, но не самим списком объектов. Для этого нужен отдельный объект. Я думаю, что одно «приложение», но не список ваших приложений. –

+0

@ M.Deinum Это та же проблема, если я возвращаю простой int – thibon

+0

«int» не является объектом xml. Чтобы вернуть XML, вы должны вернуть объект, который может быть привязан к XML (т. Е. Ваш объект «Приложение», о котором я также упомянул в предыдущем комментарии). –

ответ

0

Убедитесь, что вы JAXB2 в вашем пути к классам и зарегистрировали соответствующий message converter и передать заголовок Accept: application/xml. Кроме того, как предположил М. Дейн, для маршаллинга для работы вам также необходимо обернуть элементы <Application /> в другом элементе <Applications />.

Смежные вопросы