在儀表板上,每個用戶可以看到一些基本統計信息。讓我們舉例來說,「最後登錄」日期。 (但也有更多的統計/值/設置來顯示)Bean的重用
的XHTML文件看起來simplidfied這樣的:
<h:outputText value="statisticController.lastLoginDate()" />
豆本身使用@Inject
獲取會話,因此當前用戶:
@Named
@RequestScoped
public StatisticController{
@Inject
private mySessionBean mySession;
@PostConstruct
private void init(){
//load stats for mySession.currentUser;
}
}
現在,我想要生成一個列表,例如某個角色可以查看所有用戶的值。因此我不能再使用會話注入,因爲現在需要爲多個用戶生成StatisticController。
有規律的類,這不會是一個大問題 - 將userEntity添加到構造函數。在JSF中解決這個問題的「最佳實踐」是什麼?
如果我修改StatisticController到這樣的事情:
@Named
@RequestScoped
public StatisticController{
public void init(User user){
//load stats for user;
}
}
我將需要手動調用init(user)
當然。從XHTML文件的迭代中如何實現這一點?
我可以重構它,因此valueLoading在實際的getter方法發生,並重復這樣的:
<ui:repeat var="user" value="#{userDataService.getAllUsers()}">
<h:outputText value="statisticController.lastLoginDate(user)" />
...
</ui:repeat>
但後來我就需要加載「每一個」獨立的價值,這是不好的。
所以這樣的方法是「更好」:
<ui:repeat var="user" value="#{userDataService.getAllUsers()}">
statisticController.init(user);
<h:outputText value="statisticController.lastLoginDate()" />
...
</ui:repeat>
然而,這並不看起來非常舒服無論是。進一步做這樣的事情,會將幾乎所有的後端資料移動到渲染響應階段,這是錯誤的。
任何想法/ Tipps如何解決這個問題,而不是感覺「像解決方法」?
謝謝,使得它的方式更清晰。我總是混合模型和服務,然後不適合應用程序非常好:) – dognose 2013-04-12 11:43:44