こんにちは、webapp で jboss を使用しています。メッセージを投稿したり、投稿済みのメッセージに返信したりできるフォーラム ページに似たページを 1 つ取得しました。私のjsfには、新しいメッセージを追加するための3つのdivタグがあり、1つはすべてのメッセージを一覧表示するため、もう1つは選択したメッセージを表示するためです。すべてのタグが埋め込まれており、すべてのタグに次のような render 属性があります。
<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 にリダイレクトします。そこで、コントローラーは外部からページ セットを取得し、add div をレンダリングします。
拡張永続コンテキストを機能させることができなかったため、/* にフィルターを設定してユーザー トランザクションを開き、chain.DoFilter の後でトランザクションをコミットした後、エンティティ マネージャーをそのトランザクションとマージしました。これは、手動で遅延読み込みを有効にする必要がありました..
問題は、返信メッセージを追加すると、返信のあるリストがすぐに更新されないことです。メッセージ リストに戻ってから、ビュー div で同じメッセージをもう一度開いて、返信のリストを更新する必要があります..または...返信を追加する方法で、メッセージオブジェクトが所有する返信のリスト内に返信を手動でロードしようとしました(遅延ロードされ、@OneToManyにマップされています)。
トランザクションを管理し、リストをロードすると、リストが自動的に更新されないと想定しているため、休止状態が遅延ロードされたリストをリロードしていることを誰かに教えてもらえますか。