Java Spring:HttpMessageConverter基于HttpServletRequest的JSON响应
我正在尝试创建一个Spring HttpMessageConverter,它:Java Spring:HttpMessageConverter基于HttpServletRequest的JSON响应,java,json,spring,http,rest,Java,Json,Spring,Http,Rest,我正在尝试创建一个Spring HttpMessageConverter,它: 能够在Jackson JSON HttpMessageConverter序列化程序和 有权访问HTTPServletRequest上下文路径(request.getSession().getServletContext().getContextPath()) 我认为Spring的bug/feature请求是类似的,但我不确定如何将所有部分组合在一起 具体例子 假设我有一颗豆子: public class AppIco
request.getSession().getServletContext().getContextPath()
)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; }
}
以及弹簧控制器:
@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“}
我正在寻找一种注入消息转换器的方法,以便在返回的AppIcon对象到达Jackson序列化之前,将webapp的上下文路径包含到其url字段中
例如,如果我的应用程序运行在host.com/TestApp
,并且我发出了一个请求,例如GET host.com/TestApp/icon
,我希望能够修改返回的AppIcon,使其具有url/TestApp/awesomeIcon
,而不是http://someurl.com/awesomeIcon
。然后,当Jackson序列化AppIcon对象时,它将包含此URL而不是原始URL
注意:我想使用一个消息转换器,这样我就不必修改大量可能直接或间接返回AppIcon的控制器方法
有什么方法可以满足我的要求吗?谢谢您的后续跟进。这基本上已经不相关了,但如果能为未来的人们提供一个可靠的答案,那就太好了。等等,@andyb,你在评论中也提到了这个问题。你实际上指的是什么问题?:)去年我看到了你的问题,但从来没有找到时间调试Spring并寻找答案。昨天,我发现了这个问题,虽然并没有解决方案,但还是有一些想法可能会有所帮助。谢谢,明白了!我来看看这个问题。你是在要求对另一个转换器的输出运行一个转换器吗?这毫无意义;它们在对象和字节流之间转换。