【发布时间】:2014-10-25 11:30:58
【问题描述】:
我有一个名为 AdminResource 的父资源和一个名为 AdminModuleResource 的子资源。
父资源正确安装了 HATEOAS 链接:
{
"firstname" : "Stephane",
"lastname" : "Eybert",
"email" : "mittiprovence@yahoo.se",
"password" : "e41de4c55873f9c000f4cdaac6efd3aa",
"passwordSalt" : "7bc7bf5f94fef7c7106afe5c3a40a2",
"links" : [ {
"rel" : "self",
"href" : "http://localhost/admins/3683"
}, {
"rel" : "modules",
"href" : "http://localhost/admins/3683/modules"
} ],
"id" : 3683
}
孩子的资源也正确安装了 HATEOAS 链接:
{
"module" : "BTS",
"adminResource" : {
"firstname" : "Stephane",
"lastname" : "Eybert",
"email" : "mittiprovence@yahoo.se",
"password" : "e41de4c55873f9c000f4cdaac6efd3aa",
"passwordSalt" : "7bc7bf5f94fef7c7106afe5c3a40a2",
"links" : [ ],
"id" : 3683
},
"links" : [ {
"rel" : "self",
"href" : "http://localhost/modules"
} ],
"id" : 1087
}
但是它的父资源已经失去了它的链接。
目前,在我的子管理模块资源中,父管理资源没有链接。事实上,汇编器的 toResource 方法只提供了子管理模块资源的链接。
public AdminModuleResource toResource(AdminModule adminModule) {
AdminModuleResource adminModuleResource = new AdminModuleResource();
adminModuleResource.fromAdminModule(adminModule);
adminModuleResource.add(linkTo(AdminModuleController.class).slash(adminModuleResource.getId()).withSelfRel());
return adminModuleResource;
}
public AdminResource toResource(Admin admin) {
AdminResource adminResource = createResourceWithId(admin.getId(), admin);
adminResource.fromAdmin(admin);
adminResource.add(linkTo(AdminController.class).slash(admin.getId()).slash(UriMappingConstants.MODULES).withRel(UriMappingConstants.MODULES));
return adminResource;
}
知道如何将链接添加到父管理资源,即使在子管理模块资源中?
编辑:这是我构建资源的方式:
public void fromAdminModule(AdminModule adminModule) {
this.setResourceId(adminModule.getId());
this.setModule(adminModule.getModule());
AdminResource adminResource = new AdminResource();
adminResource.fromAdmin(adminModule.getAdmin());
this.adminResource = adminResource;
}
public void fromAdmin(Admin admin) {
this.setResourceId(admin.getId());
this.setFirstname(admin.getFirstname());
this.setLastname(admin.getLastname());
this.setEmail(admin.getEmail().toString());
this.setPassword(admin.getPassword());
}
谢谢!
斯蒂芬
【问题讨论】:
-
你是如何构建 AdminModule 的?
-
@ChrisDaMour 我在问题中添加了构建器作为编辑。
-
我已经阅读了您的博客教程,请考虑创建一个 JIRA 问题来询问您的要求的改进。