1
我正在開發一個Java EE應用程序,用戶可以在其中註冊某些單元。我想,要分離的標籤上,當用戶登錄要顯示的每個單元。支持bean的動態內容不會立即在視圖中更新
<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庫的問題
有沒有人有我怎樣才能解決這個什麼建議嗎?謝謝
我向EJB中添加了對方法'create'所說的內容。但我收到異常'引發:java.lang.IllegalArgumentException:無法刷新不管理的對象:類web.effectinet.entities.User.'我使用netbeans生成的代碼爲EJB,所以我重寫了' UnitFacade' EJB – interboy
這和預期的一樣。在單元的創建方法中,不管理用戶。不知道你的實體和它們之間的關係很難說。如果您有1:n的用戶和單位關係,您也可以將新單位添加到用戶集合,然後合併/編輯用戶,而不是直接創建新單位。然後,您不需要刷新用戶,因爲您已將該單元手動添加到集合中。 –
謝謝你的幫助。我設法通過在創建單元時手動修改用戶對象的unitCollection屬性來實現。但是,我想出於好奇而問一些問題。之前,我嘗試在用戶EJB中創建一個刷新(用戶用戶)方法。但是,當從託管bean調用此函數時,我收到了異常'java.lang.IllegalArgumentException:無法刷新[userId = 31]的管理對象,這是當時登錄的用戶。我無法理解爲什麼這不起作用。不管怎麼說,再次感謝 – interboy