1

私は、ユーザーがいくつかのユニットを登録できるJavaEEアプリケーションに取り組んでいます。ユーザーがログインしたときに、各ユニットが別々のタブに表示されるようにしたいと思います。

<p:tabView id="unitTabs" cache="false" var="unit" value="#{getUnitsOfLoggedInUser(loginController.checkedUser)}"> 
        <p:tab id="unitTab" title="#{unit.unitName}">  

            //content here

        </p:tab>  
</p:tabView>

バッキングBeanにはこの方法があります

public List<Unit> getUnitsOfLoggedInUser(User user) {
    unitsOfLoggedInUser = (List<Unit>) user.getUnitCollection();
    return unitsOfLoggedInUser;
}

ただし、ユーザーが新しいユニットを作成した場合、新しいタブはすぐには表示されません。ページを更新しても表示されません。ただし、サーバーを再起動して再度実行すると、新しいタブが表示されます。キャッシュプロパティがあり、呼び出しごとに読み込まれないようです。

また、コードをデバッグするgetUnitsOfLoggedInUser(user)と、ページがレンダリングされる前にメソッドが複数回呼び出されます。

JSFデータテーブルも試してみましたが、動作は同じなので、Primefacesライブラリの問題ではありません。

誰かがこれをどのように解決できるか提案がありますか?ありがとう

4

1 に答える 1

3

答えは、新しいユニットを保存する方法によって異なります。user1 つのオプションは、新しいユニットを保存した後にエンティティを更新することです。いずれにせよ、あなたはできる

em.refresh(user);

保存後、emのインスタンスはどこにありますかEntityManager

アップデート:

新しいユニットを直接作成する代わりに、新しいユニットをユーザーのコレクションに追加してから、ユーザーをマージ/編集することもできます。その後、手動でユニットをコレクションに追加したため、ユーザーを更新する必要はありません。

于 2012-05-31T09:34:29.450 に答える