У меня есть объекты: Post, Пользователь, комментарий с помощью двунаправленных отношений:EntityManager не получает из базы данных?
--------- 1 * ---------
| Post | <--------> |Comment|
--------- ---------
--------- 1 * ---------
| User | <--------> |Comment|
--------- ---------
У меня есть простая страница, которая отображает одно сообщение и все его комментарии и пользователей, написавших их. Внизу у меня есть простая текстовая область, когда вошедший в систему пользователь может оставлять комментарии. При нажатии кнопки «Отправить» вызывается метод 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
, чтобы новый комментарий был доступен?
Существует также действие viewPost в фоновом режиме, которое делает то же самое post = postBean.getPost(post.getId())
, но опять же кажется, что данные не загружаются из базы данных. Я удалил комментарии из базы данных, но они все еще были указаны на странице viewpost.
'viewpost? Faces-redirect = true' works. – l245c4l
Это часть JSF 2.0. Неявная навигация. Нет лиц-config больше. '? Faces-redirect = true' заменяет' 'в случае с навигацией в старом стиле. –
BalusC
Как отключить кеш? – l245c4l