Я новичок в весне. Я хочу загрузить данные в две модели 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 = null, trade = null]
Что я делаю неправильно. Любая помощь будет оценена.
Я думаю, вам следует прочитать @Autowried, прежде чем использовать его :).
Пожалуйста, подумайте о следующем:
Отбросьте @Autowired из TradeSkill, добавьте геттеры и сеттеры для полей trade и skill.
Убедитесь, что поля name и tradeName в моделях Skill и Trade соответственно также имеют геттеры и сеттеры.
Исправьте ваш запрос json, заменив trade_name на tradeName.
Как предположил @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"
}
}
Класс TradeSklll реализован неправильно. @Autowired не требуется. Нужен параметризованный конструктор и геттер-сеттер. Уроки торговли и навыков должны соответствовать тому же принципу.