我正在尝试创建一个Spring HttpMessageConverter:
request.getSession().getServletContext().getContextPath()
)。我认为this Spring bug / feature请求类似,但我不确定如何将所有部分组合在一起。
具体示例
假设我有一个bean:
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,我可以让Jackson将getIcon()的返回值序列化为JSON格式,可能类似于{url: "http://someurl.com/icon"}
。
我正在寻找一种方法来注入一个消息转换器,这样我就可以将webapp的上下文路径包含在返回的AppIcon对象的url字段中,然后才能进入Jackson序列化。
例如,如果我的应用程序在host.com/TestApp
运行,并且我发出GET host.com/TestApp/icon
之类的请求,我希望能够修改返回的AppIcon以获取网址/TestApp/awesomeIcon
而不是http://someurl.com/awesomeIcon
。然后当Jackson序列化AppIcon对象时,它将包含此URL而不是原始URL。
注意:我想使用消息转换器,因此我不必修改可能直接或间接返回AppIcon的大量控制器方法。
有办法做我想做的事吗?