【问题标题】:Spring - How to correctly show relationship data in view (table) using REST apiSpring - 如何使用 REST api 在视图(表)中正确显示关系数据
【发布时间】:2020-09-13 23:45:20
【问题描述】:

我有一个 User (id, username) 实体,它与 Roles (id, name) 实体具有 多对多 关系。我正在尝试在 ajax 数据表中显示用户数据。现在,如果一个用户有六个角色,它会为所有六个角色显示六个 [object Object]。我不知道如何正确显示角色名称而不是对象 Object。

这就是我所拥有的:

.DataTable(
    {
    "pagingType" : "full_numbers",
    "sAjaxSource" : "/api/AppUser/all",
    "sAjaxDataProp" : "",
    "aoColumns" : [
    {
    "data" : "id"
    },
    {
    "data" : "username"
    },
    {
    "data" : "userenabled"
    },
    {
    "data" : "useremail"
    },
    {
    "data" : "userfirstname"
    },
    {
    "data" : "userlastname"
    },
    {
    "data" : "useraddress"
    },
    {
    "data" : "roles"
    }

这是它在数据表中的样子:

这是我的 REST Controller 片段:

@RestController
@RequestMapping("/api/AppUser")
public class AppUserRestAPIs {
    @GetMapping(value = "/all", produces = "application/json")
    public List<AppUser> getResource() {
        return appUserJPARepository.findAll();
    }
}

我知道这一定很琐碎,但感觉很迷茫,找不到一个关于如何使用 REST api 在视图 (html) 中表示关系数据的示例。几乎到处搜索。我在这里缺少什么?将不胜感激这里的任何指针。

【问题讨论】:

    标签: ajax spring rest datatable spring-data-jpa


    【解决方案1】:

    回答我自己的问题:

    找到了!这里-https://editor.datatables.net/examples/advanced/joinArray.html

    所以代替:

    {
        "data" : "roles"
    }
    

    我必须使用:

    {
          "data" : "roles",
          render : "[, ].name"
    }
    

    一切正常,但现在我不知道如果我不使用 Datatable 会怎样。不知道我是否必须提出另一个问题。

    【讨论】:

      【解决方案2】:

      使用函数来扁平化角色列表: 而不是

      {
          "data" : "roles"
      }
      

      试试这个:

      {
       "data": null,
        "render": function(data, type, row, meta) {
                  var flatrole = '';
                  //loop through all the roles to build output string
                  for (var role in data.roles) {
                     flatrole = flatrole + role.name + " ";
                  }
                  return flatrole;
      
                }
      }
      

      【讨论】:

      • 使用上面的,它现在为每个角色显示 6 个未定义。请建议
      • 角色对象的结构是什么?
      • Hemant 我自己回答。但现在我的问题是,如果我不使用 Datatable 会怎样?
      • 我不明白上下文。你想要数据表的替代品吗?
      • 是的,正确。数据表的替代品,如果可能的话,Hemant。
      猜你喜欢
      • 1970-01-01
      • 2020-12-05
      • 2021-08-17
      • 1970-01-01
      • 2018-01-05
      • 2018-02-01
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      相关资源
      最近更新 更多