【问题标题】:avoid Infinite recursion relationships with serializer (angularjs)避免与序列化程序(angularjs)的无限递归关系
【发布时间】:2017-08-23 15:08:56
【问题描述】:

我目前正在尝试使用 @OneToMany 关系实现一个 RESTful 应用程序。

我的实体是团队和玩家(一个团队,许多玩家 - 一个玩家对一个团队)

为了避免无限递归,我决定使用返回 id 的序列化程序。此序列化程序已作为注释添加到 match 属性。

当我用邮递员检查它时它工作正常。但是当我尝试在我的前端显示值时,玩家的 teamid 以 JSON 格式显示(见图)。

picture of my problem

如何将 id 值更改为简单的数字?这是角度问题吗?我是这个框架的新手,只是复制了一个简单的控制器来查看 ng-repeat 循环表中的结果

这是我的实体:

团队:

@Entity
@Table(name = "TEAMS")
public class Team {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;

@Column(name = "TEAMNAME")
private String teamname;

@OneToMany(mappedBy = "team")
private List<Player> players;

//..getter/setter etc..
}

玩家:

@Entity
@Table(name = "PLAYERS")
public class Player {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;

@Column(name = "NAME")
private String name;

@ManyToOne
@JoinColumn(name = "TEAMID")
@JsonSerialize(using = TeamSerializer.class)
private Team team;

//..getter/setter etc.

序列化器:

public class TeamSerializer extends JsonSerializer<Team>{

@Override
public void serialize(Team team, JsonGenerator jgen, SerializerProvider provider)
        throws IOException, JsonProcessingException {
    jgen.writeStartObject();
    jgen.writeNumberField("id", team.getId());
    jgen.writeEndObject();

  }
}

和 app.js 条目:

app.controller({
PlayerListController: function($scope, Player) {
    $scope.players = Player.query();
}
});

并通过以下方式调用它:

<tr ng-repeat="player in players">
    <td>{{player.id}}</td>
    <td>{{player.name}}</td>
    <td>{{player.team}}</td>
</tr>

【问题讨论】:

    标签: angularjs angularjs-scope jsonserializer


    【解决方案1】:

    如何将 id 值更改为简单的数字?

    更改自:

    <td>{{player.team}}</td>
    

    到:

    <td>{{player.team.id}}</td>
    

    【讨论】:

      猜你喜欢
      • 2021-03-10
      • 1970-01-01
      • 2012-04-28
      • 2020-11-10
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      相关资源
      最近更新 更多