程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring 4.0.x JSON / Ajax HTTP / 1.1 406不可接受大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring 4.0.x JSON / Ajax http / 1.1 406不可接受?

开发过程中遇到Spring 4.0.x JSON / Ajax http / 1.1 406不可接受的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring 4.0.x JSON / Ajax http / 1.1 406不可接受的解决方法建议,希望对你解决Spring 4.0.x JSON / Ajax http / 1.1 406不可接受有所启发或帮助;

对于观众。

错误在同一URL中。它包含了.htm

因此,对于所有开发人员,请务必将其删除

From

@requestMapPing(value="/findallproductobycategoria.htm", method=requestMethod.POST,
                consumes = MediaType.APPliCATION_JsON_VALUE,
                produces = MediaType.APPliCATION_JsON_value)
public @ResponseBody Set<Producto> findAllProductoByCategoria(@requestbody Categoria categoria){
    logger.info("findAllProductoByCategoria: {}", categoria.toString());
    return this.fakeMultipleRepository.findAllProductoByCategoria(categoria.getID());
}

To

@requestMapPing(value="/findallproductobycategoria", method=requestMethod.POST,
                consumes = MediaType.APPliCATION_JsON_VALUE,
                produces = MediaType.APPliCATION_JsON_value)
public @ResponseBody Set<Producto> findAllProductoByCategoria(@requestbody Categoria categoria){
    logger.info("findAllProductoByCategoria: {}", categoria.toString());
    return this.fakeMultipleRepository.findAllProductoByCategoria(categoria.getID());
}

From:

$.AJAX({
    url: "/spring-utility/facturaAJAX/findallproductobycategoria.htm" ,
    data: JsON.Stringify(Json),
    dataType: 'Json',
    type: "POST",

To:

$.AJAX({
    url: "/spring-utility/facturaAJAX/findallproductobycategoria" ,
    data: JsON.Stringify(Json),
    dataType: 'Json',
    type: "POST",

Because I have

@OverrIDe
public voID configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    Map<String,MediaType> mediaTypes = new linkedHashMap<>();
    mediaTypes.put("Json", MediaType.APPliCATION_JsON);
    mediaTypes.put("xml", MediaType.APPliCATION_XML);
    configurer.mediaTypes(mediaTypes);
    configurer.defaultContentType(MediaType.TEXT_HTML);
}

Spring提供了更多关于URL .extension的偏好,而不是标题内容

解决方法

我正在通过Java Config使用Spring 4.0.5.RELEASE和Spring MVC

我的pom.xml中包含以下内容:

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

Where <jackson.version>1.9.13</jackson.version>

我正在使用有关JSON的Spring默认配置。在某些情况下,@Controller
我有以下几点:

@requestMapping(value="/getjsonperson",method=requestMethod.GET,produces=MediaType.APPLICATION_JSON_value)
public @ResponseBody Person getJSONPerson(){
    logger.info("getJSONPerson - getjsonperson");
    return PersonFactory.createPerson();
}

@requestMapping(value="/getperson.json",method=requestMethod.GET)
public @ResponseBody Person getPersonJSON(){
    logger.info("getPerson - getpersonJSON");
    return PersonFactory.createPerson();
}

并且工作正常。我可以在浏览器中看到返回的JSON值。到这里为止
一切正常。

现在我想集成Spring MVC +(JSON AJAX)

我有本教程如何参Spring MVC:Ajax和JQuery

好的,关于AJAX的JSON,我有以下内容(通过选择框或组合框加载第二个集合或集合)

注意:URL是静态的,即使我仅使用/spring- utility/facturaajax/findallproductobycategoria.htm该问题仍然存在

$("#categoria").change(function(event){

    var json = {"id" : $(this).find("option:SELEcted").val(),"nombre" : $(this).find("option:SELEcted").text() };

    $.ajax({
        url: "http://localhost:8080/spring-utility/facturaajax/findallproductobycategoria.htm",data: JSON.Stringify(json),type: "POST",beforeSend: function(xhr) {
            xhr.setrequestHeader("Accept","application/json");
            xhr.setrequestHeader("Content-Type","application/json");
        },success: function(products) {
            alert("all fine!!!!");
        }

    });

    //event.preventDefault();
});

关于控制器我有以下内容来处理ajax进程

@requestMapping(value="/findallproductobycategoria.htm",method=requestMethod.POST,consumes = MediaType.APPLICATION_JSON_VALUE,produces = MediaType.APPLICATION_JSON_value)
public @ResponseBody Set<Producto> findAllProductoByCategoria(@requestBody Categoria categoria){
    logger.info("findAllProductoByCategoria: {}",categoria.toString());
    return this.fakeMultipleRepository.findAllProductoByCategoria(categoria.getId());
}

即使我使用headers=”Accept=application/json”还是headers=”Content- Type=application/json”问题仍然存在。

POJO是可序列化的

public class Categoria implements serializable {

    private static final long serialVersionUID = 5655804710111228325L;

public class Producto implements serializable {

    private static final long serialVersionUID = -6362590479124787529L;

The problem :问题:当我更改SELEct html元素的值时,我始终会收到http / 1.1 406不可接受的消息(请参见下面的两个图像)

便说一句:永远不会调用服务器端。

我已经阅读过SO上的其他文章。实际上,它们都提到了Jackson,并且基于Spring3.2.x。

即使我添加以下内容,问题仍然存在

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

Thank You.

大佬总结

以上是大佬教程为你收集整理的Spring 4.0.x JSON / Ajax HTTP / 1.1 406不可接受全部内容,希望文章能够帮你解决Spring 4.0.x JSON / Ajax HTTP / 1.1 406不可接受所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。