Я работаю над проектом для начинающих в Spring Boot в java, с Hibernate, JPA и Thymeleaf. У меня есть Post
сущность с 3 важными переменными: String title
, String content
и List<Tag> tags
. Во-вторых, у меня есть форма, которая используется для создания новых Post
сущностей. Как видите, у меня нет проблем с настройкой входных данных для String title
и String content
, но я не знаю, как я могу позволить пользователю ввести tags
сообщения.
Post. java:
@Entity
@Table(name = "post")
public class Post {
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Id
@Column(name = "postId")
private Integer postId;
@Column(name = "title")
private String title;
@Column(name = "content")
private String content;
@ManyToMany
@JoinTable(name="postTag", joinColumns = { @JoinColumn(name = "postId") }, inverseJoinColumns = { @JoinColumn(name = "tagId") })
private List<Tag> tags = new ArrayList<Tag>();
public Post() {
}
public Integer getPostId() {
return postId;
}
public void setPostId(Integer id) {
this.postId = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public List<Tag> getTags() {
return tags;
}
public void setTags(List<Tag> tags) {
this.tags = tags;
}
}
Важная часть PostController. java
@GetMapping("/add")
public String addPostForm(Model model, Post post) {
model.addAttribute("post", post);
model.addAttribute("tags", post.getTags());
return "add-post";
}
@PostMapping("/add")
public String addPostProcess(@ModelAttribute("post") Post post, Model model) {
postService.savePost(post);
//return the page, what will display the posts
}
Важная часть add-post. html
<form action="#" th:action="@{/posts/add}" th:object="${post}" method="post">
<input type="text" th:field="*{title}" id="title" />
<textarea th:field="*{content}" id="content"></textarea>
<div th:each="tag : ${tags}">
<input type="text" th:field="*{tag.name}" id="tag">
</div>
<div th:each="item, tag : ${tags}">
<input th:field="${tags[__${tag.index}__].name}" type="text"/>
</div>
<input type="submit" value="Add post" />
</form>
Как я могу это сделать?