找不到媒体类型= application / x-www-form-urlencoded的MessageBodyReader

时间:2017-03-28 06:53:01

标签: ajax

@Path("webadd21")
@POST
@BeanParam
@Consumes( MediaType.APPLICATION_FORM_URLENCODED)       //接收的
public String doAdd21(Contact contact){

    System.out.println(222);
    System.out.println(contact.getId());
    System.out.println(contact.getName());
}

我的页面请求使用ajax发布表单,如下所示:

    var dd = $("#testForm").serialize();
    $.ajax({
        type : "POST",
        data : JSON.stringify(dd),
        url : "/arq/rest/booking/webadd21",
        //contentType:"application/json", 
        dataType : "json", 
        success : function(data) {
            //alert(data);
        }
    })

但我总是得到错误415,我该怎么办?

2 个答案:

答案 0 :(得分:0)

似乎APPLICATION_FORM_URLENCODED仅适用于@FormParam带注释的参数,无法映射到实体:

  

媒体类型" application / x-   WWW窗体-urlencoded"根据字符串定义参数,并且没有与每个参数相关联的内容类型,因此在这种情况下,通用消息体读取器/写入器不能像JAXB那样使用。

由于您使用ajax发送json数据,因此更简单的解决方案是将您的服务声明为使用json:

@Consumes(MediaType.APPLICATION_JSON)

This thread也建议使用MULTIPART_FORM_DATA代替,这似乎适用于实体。

答案 1 :(得分:0)

您必须包括以下内容:

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

关于ajax属性