【发布时间】:2011-04-08 20:26:21
【问题描述】:
我有实体:帖子、用户、评论具有双向关系:
--------- 1 * ---------
| Post | <--------> |Comment|
--------- ---------
--------- 1 * ---------
| User | <--------> |Comment|
--------- ---------
我有一个简单的页面,它显示单个帖子及其所有 cmets 和撰写它们的用户。 在底部我有简单的文本区域,当登录用户可以发表评论时。单击提交时,将调用来自支持 bean 的方法 saveComment。现在我键入评论单击提交操作 saveComment 导航到同一页面。 saveComment 看起来像这样:
String username = getLoginName();
if(username != null)
{
User u = userBean.getUser(username);
post = postBean.getPost(post.getId());
comment.setPost(post);
comment.setUser(u);
commentBean.updateComment(comment);
post = postBean.getPost(post.getId());
}
return "viewpost?faces-redirect=true";
viewpost 看起来像这样:
<ui:define name="content">
<h:outputText value="#{postController.post.title}"/>
<br/>
<h:outputText value="#{postController.post.body}"/>
<br/>
<h:dataTable value="#{postController.post.comments}" var="item">
<h:column>
<h:outputText value="#{item.body}"/>
<br/>
<h:outputText value="#{item.user.username}"/>
<br/>
</h:column>
</h:dataTable>
<h:form rendered="#{postController.loggedIn}">
<h:inputTextarea value="#{postController.comment.body}"/>
<h:commandButton value="Submit" action="#{postController.saveComment}"/>
</h:form>
</ui:define>
但是,当我单击提交时,评论会保存到数据库中,但不会呈现。 post = postBean.getPost(post.getId())(基本上是return em.find(Post.class, id))不应该重新加载post,以便新评论可用吗?
在支持 bean 中也有 viewPost 操作,它执行相同的post = postBean.getPost(post.getId()),但似乎数据没有从数据库加载。我从数据库中删除了 cmets,但它们仍然列在 viewpost 页面中。
【问题讨论】:
标签: orm jpa jsf-2 java-ee-6 jpa-2.0