Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring:HttpMessageConverter基于HttpServletRequest的JSON响应_Java_Json_Spring_Http_Rest - Fatal编程技术网

Java Spring:HttpMessageConverter基于HttpServletRequest的JSON响应

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

我正在尝试创建一个Spring HttpMessageConverter,它:

  • 能够在Jackson JSON HttpMessageConverter序列化程序和
  • 有权访问HTTPServletRequest上下文路径(
    request.getSession().getServletContext().getContextPath()
  • 我认为Spring的bug/feature请求是类似的,但我不确定如何将所有部分组合在一起

    具体例子

    假设我有一颗豆子:

    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并寻找答案。昨天,我发现了这个问题,虽然并没有解决方案,但还是有一些想法可能会有所帮助。谢谢,明白了!我来看看这个问题。你是在要求对另一个转换器的输出运行一个转换器吗?这毫无意义;它们在对象和字节流之间转换。