嗨,我在 webapp 上与 jboss 一起工作。我有一个类似于论坛页面的页面,您可以在其中发布消息并回复已发布的消息。在我的 jsf 中,我有三个 div 标签,一个用于添加新消息,一个用于列出所有消息,一个用于查看选定的消息。所有标签都嵌入其中,每个标签上都有渲染属性,如下所示:
<h:pannelGroup rendered="#{myController.shouldRender('add')}">
<!-- Here is my html for adding new message -->
</h:pannelGroup>
<h:pannelGroup rendered="#{myController.shouldRender('list')}">
<!-- Here is my html for listing messages -->
</h:pannelGroup>
<h:pannelGroup rendered="#{myController.shouldRender('view')}">
<!-- Here is my html for viewing message and its replys..
also there is hidden div with html for popup to post reply -->
<div id="reply">
<!-- This is hidden html that is shown when clicked reply
link in the message div below.
When shown users can add reply to the message -->
</div>
<div id="message">
<!-- Here is show the message itself -->
</div>
<div id="replyList">
<!-- Here is list replys for the message currently beeing viewed
For listing the replys i used ui:repeate and c:forEach from the jstl core
both resulting with same outcome.
In my message object i have list of replys which i load lazily...
-->
</div>
</h:pannelGroup>
我的支持 bean,剥离了所有注释和其余代码......
MyController{
String page;
public boolean shouldRender(String view){
return page.equals(view);
}
}
我使用菜单项列表中的 actionListener 设置的页面属性,在我将用户重定向到 message.xhtml 页面之前,我将 myController 的属性页面设置为我想要查看的 div 名称,例如,如果我单击添加链接,我设置page = "add" 并重定向到 message.xhtml。控制器从外部拾取页面集并呈现添加 div。
因为我无法让扩展的持久性上下文正常工作,所以我在 /* 上设置了过滤器以打开用户事务,然后在 chain.DoFilter 我提交我的事务之后将实体管理器与那个合并。这我需要手动启用延迟加载..
问题是,当我添加回复消息时,带有回复的列表不会立即刷新,我需要返回消息列表,然后再次在视图 div 中打开相同的消息以刷新回复列表.. 或...在添加回复的方法中,我尝试在消息对象拥有的回复列表中手动加载我的回复(这是延迟加载并映射@OneToMany),这样它就可以工作,但我不喜欢那个解决方案。
谁能告诉我天气休眠正在重新加载延迟加载的列表,因为我管理事务并且我假设一旦它加载了我的列表,它就不会自行刷新它。