为了账号安全,请及时绑定邮箱和手机立即绑定

Spring boot AJAX POST 请求和来自用户界面的 knockout.js 调试错误

Spring boot AJAX POST 请求和来自用户界面的 knockout.js 调试错误

万千封印 2023-05-10 14:02:47
我有两个java models球员和球队。我有一个控制器类。当我从用户界面通过 ajax 发送发布请求时出现错误。我已经解决了类似的错误CORS。但是有一个错误我无法解决;knockout.js没有发生调试错误和发布请求。我的数据库没有变化。我共享了模型类、控制器类、html 和javascript文件。我需要改变什么?你能帮忙吗?播放器模型@Entity@Table(name = "player")public class Player{    @Id    @GeneratedValue    @NotNull    @Column    private int id;    @NotNull    @Column    private String playerName;    @NotNull    @Column    private String playerSurname;    @Column    private int playerAge;    public String getPlayerName() {        return playerName;    }    public void setPlayerName(String playerName) {        this.playerName = playerName;    }    public String getPlayerSurname() {        return playerSurname;    }    public void setPlayerSurname(String playerSurname) {        this.playerSurname = playerSurname;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public int getPlayerAge() {        return playerAge;    }    public void setPlayerAge(int playerAge) {        this.playerAge = playerAge;    }}团队模型@Entity@Table(name = "team")public class Team {    @Id    @GeneratedValue    @NotNull    @Column    private int id;    @NotNull    @Column    private String teamName;    @Column    private String teamCountry;    public Team(){    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getTeamName() {        return teamName;    }    public void setTeamName(String teamName) {        this.teamName = teamName;    }    public String getTeamCountry() {        return teamCountry;    }    public void setTeamCountry(String teamCountry) {        this.teamCountry = teamCountry;    }    @ManyToOne    private Player player;    public Player getPlayer() {        return player;    }    public void setPlayer(Player player) {        this.player = player;    }}
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

回答你的问题,它没有做任何事情,因为你没有发送参数 Player (必须有效),因为你使用的是表单,这不是你应该这样做的方式。(请求参数通过 url 发送,你的表单应该通过 @RequestBody 发送)

我会做这样的事情:

在我的控制器上,由于我只能有一个@RequestBody,但是我的表单发送了一个包含多种类型对象数据的对象,我会做一个Dto

是这样的:

@PostMapping(value="/createNewTeam")

    public Team createNewTeam(@Valid @RequestBody PayloadDto payloadDto) {

        final Player player = new Player();

        player.setPlayerName(payloadDto.playerName);

        // fill player information

        final Team team = new Team();

        // fill team information... 

        playerRepository.save(player);

        return teamRepository.save(team);

    }

您的 PayloadDto 对象必须包含您发送的所有属性。


public class PayloadDto{


  @JsonProperty("playerName")

  public String playerName;

  @JsonProperty("playerSurname")

  public String playerSurname;

  // .. more player and team properties 

}

确保 jsonProperty("propertyName) 与您在发送信息时使用的名称相同


查看完整回答
反对 回复 2023-05-10
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信