Извинения, я не видел тега для java-noob.HttpMediaTypeNotAcceptableException при указании applicaiton/xml в заголовке Accept
Я работаю с существующим спокойным api весной. Мне было поручено добавить новый api с несколькими утилитами, каждый из которых возвращает строку. Все идет нормально. Все работает хорошо.
Я добавил простую обертку, чтобы вернуть строку как объект, и я смог построить/развернуть/тест, и я получаю назад мой ответ, который выглядит как
{ id: "12345" }
Если я указать Accept заголовка = application/xml
я получаю следующее исключение:
org.springframework.web.HttpMediaTypeNotAcceptableException: не удалось найти приемлемые Представительские
Другие методы в этом пакете, похоже, сериализуются как в xml, так и в json fine. Я не вижу никакого пользовательского кода сериализации, который используется в базе контроллера, и я не знаю, где он обрабатывается (или даже связан с сериализацией). Может кто-нибудь помочь мне выяснить, с чего начать искать?
Вот мой [упрощенный] Контроллер:
@Controller
public class UtilController extends ControllerBase
{
@XmlRootElement(name="util_response")
public static class UtilResponse extends APIResponseBase
{
private String id;
@XmlElement(name="id")
public String getId()
{
return id;
}
public void setId(String id)
{
this.id = id;
}
}
@RequestMapping(value = "/{pid}/util/output", method = RequestMethod.GET)
@ResponseBody
public UtilResponse output(HttpServletResponse httpResponse,
@PathVariable("pid") int pid,
@RequestParam(value = "id", required=true) String id) throws Exception
{
UtilResponse utilResponse = new UtilResponse();
utilResponse.setId(id);
return utilResponse;
}
}
Я также попытался обновить @RequestMapping
и добавил produces = "application/xml"
(да, очевидно, не имея ни малейшего понятия, что это действительно делает), но это был нулевой эффект.
Серьезно, я действительно новичок в том, как все это java-материал «работает» (.net-dev по профессии) и хотел бы больше узнать. Я не знаю, что такое Jackson
, но я не вижу ссылок на него в нашем проекте, и все остальное, похоже, работает так, пожалуйста, никаких ответов, которые говорят: «Почему бы вам просто не использовать Джексона?» У меня также есть крайние сроки, поэтому иногда просто получение его работы имеет приоритет.
спасибо, что привело меня на правильный путь. Я добавил ' .... UtilController $ UtilResponse beans: value>' в servlet-context.xml, и это сработало волшебно! –
earthling