【发布时间】:2017-02-14 20:52:40
【问题描述】:
我有 2 个实体用户和文章
用户
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue
@Column(name="user_id")
private Integer id;
@Column(name="name")
private String name;
@OneToMany(mappedBy = "userId")
private List<Article> articles;
文章
@Entity
@Table(name = "article")
public class Article {
@Id
@GeneratedValue
private Integer articleId;
private String name;
@ManyToOne
@JoinColumn(name = "user_id")
private User userId;
我可以注册一个用户,然后转到他的页面,然后从那里转到具有提交文章表单的页面。
<form:form method="POST" modelAttribute="article"
action="${pageContext.request.contextPath}/addArticle">
<table>
<tbody>
<tr>
<td>Title:</td>
<td><form:input path="name"></form:input></td>
</tr>
<tr>
<td>Author id:</td>
<td><form:input path="userId"></form:input></td>
</tr>
<%-- <form:input type="text" path="userId" disabled="true"/> --%>
<%-- <form:input type="hidden" path="id" id="id"/> --%>
<tr>
<td><input value="Add" type="submit"></td>
<td></td>
</tr>
</tbody>
</table>
</form:form>
问题是,我不知道如何将文章与该用户关联。现在我的 ArticleController 看起来像这样
文章控制器
@Controller
public class ArticleController {
@Autowired
private ArticleService articleService;
@Autowired
private UserService userService;
@RequestMapping(value = "/addArticle/{id}", method = RequestMethod.GET)
public String addArticle(@PathVariable Integer id, Model model){
User user = userService.getUserById(id);
Article article = new Article();
model.addAttribute("user", user);
model.addAttribute("article", article);
return "addArticle";
}
@RequestMapping(value = "/addArticle", method = RequestMethod.POST)
public ModelAndView addArticle(@ModelAttribute Article article) {
ModelAndView mav = new ModelAndView();
articleService.addArticle(article);
mav.setViewName("redirect:/success");
return mav;
}
}
我是怎么做到的
<form:input path="userId" disabled="true"></form:input>
会保存用户ID的值吗?我什至需要向那里传递一个 id 还是必须是一个用户对象?
在这种方法中我必须改变什么?
public ModelAndView addArticle
我用的是mysql和spring data jpa
【问题讨论】:
-
@Alan 我删除了那部分,但问题并不存在。无论如何感谢您的链接。
标签: spring forms jsp spring-mvc spring-data-jpa