Как загрузить две загрузки по две модели в @RequestBody одновременно в Spring REST Controller - PullRequest
0 голосов
/ 15 ноября 2018

Я новичок в весне.Я хочу загрузить данные в две модели Trade и Skill.Пример письменного кода здесь - Код контроллера -

    @PostMapping("/create")
    public String Create(@RequestBody TradeSkill tradeskill) {
        System.out.println(tradeskill);
        return "record is created";
    }

Тело родительского запроса -

class TradeSkill {
    @Autowired
    protected Skill skill;
    @Autowired
    protected Trade trade;

    public TradeSkill() {
        super();
        // TODO Auto-generated constructor stub
    }
    @Override
    public String toString() {
        return "TradeSkill [skill=" + skill + ", trade=" + trade + "]";
    }
}

Json - -

{
    "skill" : {
    "name" : "new skill"
    },
    "trade" : {
    "trade_name" : "Trade"
    }
}

Вывод на консоль - TradeSkill [skill= ноль, торговля = ноль]

Что я делаю не так.Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Как предложил @Bohdan Levchenko в своем ответе, классы должны выглядеть следующим образом:

TradeSkill.java

public class TradeSkill {
    protected Skill skill;
    protected Trade trade;

    public Skill getSkill() {
        return skill;
    }

    public void setSkill(Skill skill) {
        this.skill = skill;
    }

    public Trade getTrade() {
        return trade;
    }

    public void setTrade(Trade trade) {
        this.trade = trade;
    }

    @Override
    public String toString() {
        return "TradeSkill [skill=" + skill + ", trade=" + trade + "]";
    }
}

Trade.java

public class Trade {
    private String trade_name;

    public String getTrade_name() {
        return trade_name;
    }

    public void setTrade_name(String trade_name) {
        this.trade_name = trade_name;
    }
}

Skill.java

public class Skill {
    private String name;

    public String getName() {
        return name;
    }

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

Запрошенный JSON должен выглядеть следующим образом:

{
    "skill" : {
    "name" : "new skill"
    },
    "trade" : {
    "trade_name" : "Trade"
    }
}
0 голосов
/ 15 ноября 2018

Пожалуйста, рассмотрите возможность сделать следующее:

  1. Удалить @Autowired из TradeSkill, добавить методы получения и установки для полей trade и skill.

  2. Убедитесь, что поля name и tradeName в моделях Skill и Trade соответственно также имеют геттеры и сеттеры.

  3. Исправьте ваш запрос JSON, замените trade_name на tradeName.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...