Я пытаюсь создать Spring HttpMessageConverter, который:
- может работать до сериализатора Jackson JSON HttpMessageConverter и
- имеет доступ к контекстному пути HTTPServletRequest (
request.getSession().getServletContext().getContextPath()
).
Я думаю, этот Запрос об ошибке / функции Spring похож, но я не уверен, как собрать все части вместе.
Конкретный пример
Предположим, у меня есть боб:
public class AppIcon {
private String url;
public AppIcon(String url) { this.url = url; }
public String getUrl() { return url; }
public void setUrl(String url) { this.url = url; }
}
и контроллер Spring:
@Controller
public class IconController {
private static AppIcon theIcon = new AppIcon("http://someurl.com/awesomeIcon");
@ResponseBody
@RequestMapping(value="/icon", method=RequestMethod.GET)
public AppIcon getIcon() {
return theIcon;
}
}
Если я правильно настрою Spring, Джексон сможет сериализовать возвращаемое значение из getIcon () в формат JSON, возможно, что-то вроде {url: "http://someurl.com/icon"}
.
Я ищу способ внедрить конвертер сообщений, чтобы я мог включить путь контекста веб-приложения в поле URL возвращаемого объекта AppIcon до того, как он попадет в сериализацию Джексона.
Например, если мое приложение работает на host.com/TestApp
, и я делаю запрос, такой как GET host.com/TestApp/icon
, я хочу иметь возможность изменить возвращенный AppIcon, чтобы иметь URL /TestApp/awesomeIcon
вместо http://someurl.com/awesomeIcon
. Затем, когда Джексон сериализует объект AppIcon, он будет включать этот URL вместо исходного.
Примечание. Я хочу использовать конвертер сообщений, поэтому мне не нужно изменять большое количество методов контроллера, которые могут прямо или косвенно возвращать AppIcon.
Есть ли способ сделать то, что я хочу?