【问题标题】:Spring mapping effected by @ResponseBody受 @ResponseBody 影响的 Spring 映射
【发布时间】:2014-02-14 08:41:58
【问题描述】:

我正在对我的 Spring 控制器进行 ajax 调用,以从 blob 对象获取数据。我将 blob 转换为字符串,并尝试返回它。如果我不使用@ResponseBody 注解,会出现404 错误,但使用注解解决了这个问题。我尝试在ajax 代码中指定不同的数据类型,但没有任何效果。 有人可以向我解释这种行为吗?还有关于以更好的方式传回 blob 数据的任何建议吗?

@RequestMapping(value = "/BlobData", method = RequestMethod.GET)
    public @ResponseBody String genBlobData(int Id) throws SQLException {


        Blob blob =  daoImpl.getBlob(Id);
        byte[] content = blob.getBytes(1, (int) blob.length());
        String temp = new String(content);
        return temp;
    }

还有 ajax :

  $.ajax({
                    type: 'GET',
                    dataType: "text",
                        url: 'BlobData',
                        data: {Id:Id},               
                        success: function(data) 
                                {
                                     var newWindow = window.open();newWindow.document.write(data); 
                                     /* alert(data); */
                                 }
                        });

谢谢

【问题讨论】:

    标签: ajax spring spring-mvc


    【解决方案1】:

    没有@ResponseBody,返回的字符串应该是你的视图的相对路径(例如JSP文件),因此是404。

    http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-viewresolver-resolver

    【讨论】:

    • 但是即使没有解析视图也应该调用函数genBlobData,为什么我得到'/BlobData'的404,
    • @SKaul 我相信该方法确实被调用(放置一个喙点或系统输出来检查它)。就在解析视图的时候,由于没有找到,所以返回404。
    • 你是对的,方法被调用了!谢谢,关于将 blob 作为字符串传递的任何观点?
    猜你喜欢
    • 2017-02-24
    • 2016-01-26
    • 2014-09-17
    • 2018-06-07
    • 2022-09-02
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 2020-06-23
    相关资源
    最近更新 更多