如果要添加新闻的所有字段,可以操作的返回对象
责任
。所以我改了这个代码,你能应用到你的代码吗?
NewsResourceAssembler.class
应该是这样的;
@Service
public class NewsResourceAssembler implements ResourceAssembler<News, Resource<NewsResource>> {
private EntityLinks entityLinks;
@Autowired
public void setEntityLinks(EntityLinks entityLinks) {
this.entityLinks = entityLinks;
}
@Override
public Resource<NewsResource> toResource(News news) {
Link self = entityLinks.linkFor(News.class).slash(news.getId()).withSelfRel();
Link newsTags = entityLinks.linkFor(News.class).slash(news.getId()).slash("newsTags").withRel("newsTags");
Link newsComments = entityLinks.linkFor(News.class).slash(news.getId()).slash("newsComments").withRel("newsComments");
final NewsResource newsResource = new NewsResource();
return new Resource(newsResource, self, newsTags, newsComments);
}
}
现在你需要
NewsResource.class
,所以应该是这样的;
@JsonIgnoreProperties(ignoreUnknown = true)
public class NewsResource extends ResourceSupport {
}
附言:别忘了注释行的规则。根据这一变化,您的客户应该分析对客户的传入响应。因为响应时,应该在主对象上更改一些链接rel。但是你的定制参数没有改变。
编辑:
如果在你的
新闻资源.class
-->字段
newsTag
应该是这样的(
请不要忘记设置资源汇编程序类中的所有标记!
;
private List<NewsTagFields> newsTag = new ArrayList<>();
现在您需要newstagfields.class。也可以使用这个类;
public class NewsTagFields {
private final String id;
private final String name;
public NewsTagFields(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
}
最后将此代码添加到
ResourceAssembler
添加新的NewstagFields列表;
(
此代码提供获取所有
新闻标签
并转换为列表
新闻标签字段
完全地。并添加到
新闻资源
发送到客户端
)
final List<NewsTagFields> allNewsTag =
news.getNewsTag().stream()
.map(newsTag -> new NewsTagFields(newsTag.getId(), newsTag.getName()))
.collect(Collectors.toList());
newsResource.setNewsTagList(allNewsTag);