Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse JAXRS请求后有效负载未转换为请求模型对象_Java_Eclipse_Http Post_Jax Rs - Fatal编程技术网

Java Eclipse JAXRS请求后有效负载未转换为请求模型对象

Java Eclipse JAXRS请求后有效负载未转换为请求模型对象,java,eclipse,http-post,jax-rs,Java,Eclipse,Http Post,Jax Rs,我将JSON负载作为POST请求主体的一部分发送,如下所示: { "id": "xyz3", "model": "Camry", "year": 2010 } 我希望这个有效负载被转换为java类CarRequest的实例,定义如下: import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bi

我将JSON负载作为POST请求主体的一部分发送,如下所示:

{
    "id": "xyz3",
    "model": "Camry",
    "year": 2010
}
我希望这个有效负载被转换为java类CarRequest的实例,定义如下:

import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
...

@XmlRootElement(name = "carRequest")
@XmlAccessorType(XmlAccessType.FIELD)
public class CarRequest {

    private String id;
    private String model;
    private int year;

    public CarRequest() {
    }

    public String getId() {
        return id;
    }
    
    public String getModel() {
        return model;
    }
    
    public int getYear() {
        return year;
    }

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
    }
}
然而,在我的PostEndpoint资源方法中,我没有看到这种情况发生。我的资源定义为:

@POST
@Path("cars")
@Produces({ "application/json", "application/xml" })
public Response carsInfos(@Valid CarRequest carRequest) {
    
    System.out.println(carRequest);   //prints { "id": "null", "model": "null", "year": 0 }
    
    return Response.ok().build();
}
上面,打印CarreRequest的线条像

{ "id": "null", "model": "null", "year": 0 }
,而不是像

{ "id": "xyz3", "model": "Camry", "year": 2010 }

我只使用过Jackson注释来指定映射,但我认为这里真正的问题可能是缺少“@Consumes”注释。因此,我相信它不知道如何解析您的请求正文。

我尝试了@Consumes注释(谢谢@David M.Karr),但这并没有解决任何问题。事实证明,我的服务器使用的是带有JAXRS2.1特性的JavaEE8。
在为JavaEE7和JAXRS 2.0添加特性之后,请求模型开始填充这些值。

您没有在响应对象中添加任何内容。