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 使用SpringRestController和Jackson构建控制器给我HTTPStats406_Java_Json_Http_Spring Mvc_Jackson - Fatal编程技术网

Java 使用SpringRestController和Jackson构建控制器给我HTTPStats406

Java 使用SpringRestController和Jackson构建控制器给我HTTPStats406,java,json,http,spring-mvc,jackson,Java,Json,Http,Spring Mvc,Jackson,我正在构建一个rest控制器,使用Spring来处理请求,使用Jackson来序列化数据 HTTP Status 406 - type Status report message description The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "acc

我正在构建一个rest控制器,使用Spring来处理请求,使用Jackson来序列化数据

HTTP Status 406 -

type Status report

message

description The resource identified by this request is only capable of generating responses with characteristics not acceptable according to the request "accept" headers.
在谷歌搜索了一段时间后,我意识到这是因为我的请求中没有“application/json”作为我的“Accept”标题:

因此,我使用一个名为Postman的工具在请求中手动添加这个“Accept”头,再次发送请求,但仍然得到相同的错误:

我很困惑,我已经将“application/json”作为一种可接受的数据类型,为什么我仍然有这个数据不受支持的错误?仅供参考,以下是我的Rest控制器类:

package mywebapp.controller;

import java.io.IOException;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import mywebapp.dao.model.interfaces.PetDao;
import mywebapp.model.Pet;

@RestController
@RequestMapping(value = "petJson.htm")
public class PetControllerAjax {

    private static final Logger LOG = LoggerFactory.getLogger(PetController.class);


    public static Logger getLog() {
        return LOG;
    }

    @Autowired
    @Qualifier("PetDaoJpaImpl")
    private PetDao petDao;

    public PetDao getPetDao() {
        return petDao;
    }

    public void setPetDao(PetDao petDao) {
        this.petDao = petDao;
    }

    @RequestMapping(method = RequestMethod.GET)
    public List<Pet> getAllPets() throws IOException {
        getLog().info("Rest Controller activating........");
        List<Pet> petList = getPetDao().getAllPets();
        return petList;
    }

}
包mywebapp.controller;
导入java.io.IOException;
导入java.util.List;
导入org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.beans.factory.annotation.Qualifier;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RequestMethod;
导入org.springframework.web.bind.annotation.ResponseBody;
导入org.springframework.web.bind.annotation.RestController;
导入com.fasterxml.jackson.core.JsonProcessingException;
导入com.fasterxml.jackson.databind.ObjectMapper;
导入mywebapp.dao.model.interfaces.PetDao;
导入mywebapp.model.Pet;
@RestController
@RequestMapping(value=“petJson.htm”)
公共类PetControllerAjax{
私有静态最终记录器LOG=LoggerFactory.getLogger(PetController.class);
公共静态记录器getLog(){
返回日志;
}
@自动连线
@限定符(“PetDaoJpaImpl”)
私人佩刀佩刀;
公共PetDao getPetDao(){
返回petDao;
}
公共无效setPetDao(PetDao-PetDao){
this.petDao=petDao;
}
@RequestMapping(method=RequestMethod.GET)
公共列表getAllPets()引发IOException{
getLog().info(“Rest控制器激活…”);
List-petList=getPetDao().getAllPets();
返回petList;
}
}
这是我最喜欢的实体类:

package mywebapp.model;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.Date;
import java.util.Set;

@Entity
@Table(name = "pet")
public class Pet {

    private int petId;

    private String name;

    private String owner;

    private String species;

    private String sex;

    private Date birth;

    private Date death;

    private Set<Toy> toys;  


    @Id
    @Column(name = "pet_id")
    @GeneratedValue
    @JsonProperty(value="pet_id",required=true)
    public int getId() {
        return petId;
    }

    public void setId(int id) {
        this.petId = id;
    }

    @JsonProperty(value="pet_name",required=true)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getOwner() {
        return owner;
    }

    public void setOwner(String owner) {
        this.owner = owner;
    }

    public String getSpecies() {
        return species;
    }

    public void setSpecies(String species) {
        this.species = species;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Date getDeath() {
        return death;
    }

    public void setDeath(Date death) {
        this.death = death;
    }

    @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,targetEntity=Toy.class, mappedBy="pet")
    public Set<Toy> getToys() {
        return toys;
    }

    public void setToys(Set<Toy> toys) {
        this.toys = toys;
    }



}
包mywebapp.model;
导入javax.persistence.CascadeType;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.FetchType;
导入javax.persistence.GeneratedValue;
导入javax.persistence.Id;
导入javax.persistence.JoinColumn;
导入javax.persistence.OneToMany;
导入javax.persistence.OneToOne;
导入javax.persistence.Table;
导入com.fasterxml.jackson.annotation.JsonProperty;
导入java.util.Date;
导入java.util.Set;
@实体
@表(name=“pet”)
公营宠物{
私人小酒店;
私有字符串名称;
私人字符串所有者;
私有串种;
私密性;
私人日期出生;
私人约会死亡;
私人套装玩具;
@身份证
@列(name=“pet_id”)
@生成值
@JsonProperty(value=“pet_id”,必需=true)
公共int getId(){
返回petId;
}
公共无效集合id(内部id){
this.petId=id;
}
@JsonProperty(value=“pet_name”,必需=true)
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getOwner(){
归还所有人;
}
公共void集合所有者(字符串所有者){
this.owner=所有者;
}
公共字符串getSpecies(){
返回物种;
}
公共空间集合物种(字符串物种){
这个物种=物种;
}
公共字符串getSex(){
回归性;
}
公共无效集合(字符串性别){
这个。性=性;
}
公众出生日期(){
回生;
}
公共出生日期(出生日期){
这个.出生=出生;
}
公众死亡日期(){
返回死亡;
}
公众死亡(死亡日期){
死亡=死亡;
}
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,targetEntity=Toy.class,mappedBy=“pet”)
公共集getToys(){
归还玩具;
}
公众玩具(套装玩具){
这个玩具=玩具;
}
}

有人知道这里发生了什么吗?如有任何提示,我们将不胜感激,提前表示感谢

Spring4.2不支持Jackson 2.7-它将在4.3+中出现


查看Spring on的库要求,并查看和。

您使用的是哪种Spring和Jackson版本?如果在
@RequestMapping
注释中添加
products
属性以强制
“application/json”
媒体类型,会发生什么情况?@BrianClozel您好,我对Spring使用4.2.5.RELEASE,对Jackson使用2.7.0-rc2