HttpMediaTypeNotAcceptableException

时间:2011-06-17 13:14:16

标签: java javascript jquery json spring

我的jQuery函数有问题我想要实现的是在列表框中填充数据

JavaScript函数

function load() {
        $.getJSON('${findAdminGroupsURL}', {
            ajax : 'true'
        }, function(data) {
            var html = '<option value="">Groups</option>';
            var len = data.length;
            for ( var i = 0; i < len; i++) {
                html += '<option value="' + data[i].name + '">' + data[i].name
                        + '</option>';
            }
            html += '</option>';

            $('#selection').html(html);
        });
    }

服务器端是

@RequestMapping(value = "groups", method = RequestMethod.GET)
    public @ResponseBody
    List<Group> getGroups() {
        return this.businessGroups();
    }

我在load上调用load()函数它会触发函数getGroups()并成功返回列表但问题是getGroups()完成后的问题

函数(数据)不加载永远不会进入该函数,错误是

  

org.springframework.web.HttpMediaTypeNotAcceptableException:   找不到可接受的   表示

我不能回发组对象列表,还是必须是Java基元类型?

2 个答案:

答案 0 :(得分:6)

答案 1 :(得分:0)

我不确定您使用的是哪个弹簧版本。我有同样的问题,我通过将以下杰克逊罐添加到我的classpath.my spring version is 3.2.2

来解决它
jackson-mapper-asl
jackson-core-asl

这是我的控制器

@RequestMapping(value="/{name}", method = RequestMethod.GET)
public @ResponseBody List<Supplier> getSuppliers(@PathVariable String name) {


    searchDAO = (SearchDAO) SpringApplicationContext.getBean("searchDAO");
    List<Supplier> suppliers = null;
    try {
        suppliers = searchDAO.searchSuppliersByZipCode(name);
        //assertTrue(suppliers.size()>=1);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return suppliers;

}

我的应用程序上下文中只有mvc注释,不需要显式内容协商。当你有@ResponseBody时,默认将使用json格式和杰克逊罐子来转换你的pojo。