在SPRING中从ajax调用响应时显示不可接受错误

Not Acceptable error showing while calling response from ajax in SPRING

本文关键字:显示 不可接受 错误 响应 调用 SPRING 中从 ajax      更新时间:2023-09-26

我正试图从控制器类获得json数组形式的响应。当我尝试从javascript发送请求时,我得到了"不可接受"的错误。请帮助在我的代码中找到b ug。

这是我的控制器代码

@RequestMapping(value = "/ajaxvalue", method = { RequestMethod.GET }, produces=MediaType.APPLICATION_JSON_VALUE)
  public @ResponseBody Map<String, String> geResourceList(String name){
        logger.info("getAllResources() from ajax begins: ");
        Map<String, String> resourceMap = null;
        try {
            logger.info("getAllResources() from ajax begin: ");
            resourceMap = new HashMap<String, String>();
            List<ResourceModel> resourceList = resourceService
                    .getAllResources();
            java.util.Iterator<ResourceModel> resourceIterator = resourceList.iterator();
            while (resourceIterator.hasNext()) {
                ResourceModel model = resourceIterator.next();
                resourceMap.put("" + model.getResourceType(),
                        model.getName());
                logger.info("" + model.getResourceType(),
                        model.getName());
            }
        } catch (Exception e) {
            logger.debug("Error while getting location in ajax request:"
                    + e.getMessage());
            e.printStackTrace();
        }logger.info("getAllResources() from ajax ENDS: ");
        return resourceMap;
    }

这是我的jquery代码。

jQuery.ajax({
url: '<c:url value='/learningresources/ajaxvalue'/>',
type: 'GET',
dataType:'json',
contentType: "application/json",
cache:false,
success:function(response){
    alert(response);
},
error:function(jqXhr, textStatus, errorThrown){
    alert("error: "+errorThrown);
}
});

这很可能是因为类路径中没有jackson库,以下是两种解决方案,具体取决于您的配置。

如果您使用的是maven,那么在pom.xml 中添加以下依赖项

<dependency>
    <groupId>org.codehaus.jackson</groupId>
    <artifactId>jackson-mapper-asl</artifactId>
    <version>${jackson.version}</version>
</dependency>

如果您是手动添加jar,那么转到jackson下载页面并根据您的春季版本下载所需的版本。

确保在春季版本的基础上获得合适的杰克逊版本。

尝试将请求头"Accept"添加到ajax调用中。

 headers: {
    'Accept':'application/json',
 }