我试图仅检索具有特定标签的条目(帖子)。一个条目可以有很多标签,所以我使用List of objects。但我不知道如何在Controller类中构建一个合适的命令,实际上我害怕我完全迷失在这里。
Entry实体如下所示:
@Entity
public class BlogEntry {
@Id
@GeneratedValue
private Integer id;
private String title;
@Column(name = "published_date")
private Date publishedDate;
@ManyToMany
@JoinTable
private List<TagBlog> blogTags; /* Multiple tags to one entry */
我的标签实体:
@Entity
public class TagBlog {
@Id
@GeneratedValue
private Integer id;
private String tag;
@ManyToMany(mappedBy="blogTags")
private List<BlogEntry> entries;
在我的EntryService类中,我想要执行这种排序&#34; findByTagBlogIn&#34;我希望将返回具有特定标签的帖子列表。
public List<BlogEntry> findAllByTags(List<TagBlog> tag){
List<BlogEntry> blogEntry = entryRepository.findByTagBlogIn(tag);
return blogEntry;
}
但我不知道如何在Controller类中引用它。如何仅检索具有特定标记的条目?像这样的东西?但是如何将标签列表作为参数传递,也许它应该是String?
@RequestMapping(value="/welcome")
public String retrieveTaggedEntry(Model model, ?List of tags?){
model.addAttribute("entriesWithTag", entryService.findAllByTags(TagBlog tag));
return "redirect:/welcome.html";
}
在welcome.jsp文件中,我想迭代整个已分配给特定条目(post)的标签列表,如下例所示(箭头之间&#34; ---&gt;&lt ;- - &#34;是我的遗产的一部分):
<c:forEach items="${entries}" var="entry"> <!--"entries" refers to List of BlogEntry-->
<table>
<tr>
<td>Entry No. ${entry.id }</td>
<td>${entry.title}</td>
<td>
Tags: ---> #${entry.? blogTag.tag ?}, <---
</td>
<td>Published: ${entry.publishedDate}</td>
<td>
<spring:url value="/delete_entry/${entry.id}.html" var="url" />
<a href="${url}">Delete</a>
</td>
</tr>
</table>
</c:forEach>
通过稍后解决,我想通过具有特定标记的条目执行排序(通过映射spring:url value =&#34; / tag / $ {some_tag_as_a_String} .html&#34;)。
也许只有一种更简单的方式来返回只有特定标签的帖子?但我想我和我在这里工作会更容易。无论如何,任何提供的解决方案都表示赞赏。
如果需要,我愿意添加任何其他信息。
答案 0 :(得分:0)
您是否有任何理由要将整个TagBlog
对象发送给Controller?为什么不只是标签ID或标签文字? E.g。
@RequestMapping(value="/welcome")
public String retrieveTaggedEntry(Model model, @RequestParam List<String> tags) {
// Do something with your tags
}