我正在使用Java EE6和JSF來製作簡單的CRUD應用程序。Jsf頁面不顯示新添加的值
在我的許多JSF頁面中,我有一個selectOneMenu供用戶選擇現有項目。例如,如果用戶添加「考試」,他/她可以從組合框中選擇「部門」,因爲他們具有一對多的關係。
問題是,每當添加新部門時,組合框值都不會更新,直到會話超時。我需要使用SessionScoped支持bean,因爲我需要這些值在多個請求中持續存在。
下面是我用填充selectOneMenu用於一個功能(不完全如上所述,但非常相似的例子):
public SelectItem[] getExamsByDepartment(){
if(departmentMaster!=null){
Collection<ExamMaster> examMasterCollection = departmentMaster.getExamMasterCollection();
//Problem: newly added exams aren't shown until session is re-created
if (examMasterCollection != null && examMasterCollection.size() > 0) {
SelectItem[] selectItem = new SelectItem[examMasterCollection.size()];
Iterator<ExamMaster> i = examMasterCollection.iterator();
int count = 0;
while (i.hasNext()) {
ExamMaster tmpExamMaster = i.next();
selectItem[count++] = new SelectItem(tmpExamMaster, tmpExamMaster.getExamName());
}
return selectItem;
}
}
SelectItem[] selectItem = new SelectItem[1];
selectItem[0] = new SelectItem("", "[No exams found]");
return selectItem;
}
是否存在被我可以破壞並重新創建任何解決方法會議?或者我可以通過其他方式解決這個問題?
編輯:我想這個問題歸結爲,爲什麼收不插入一條記錄後更新,即使一個一對多的關係是持久性類
編輯2定義:不要使用該集合,我現在使用命名查詢,並按預期提取新記錄。我曾假定該集合應該自動更新。也許這不是真的?
感謝關於ViewScope的提示。至於收藏,我每次都會收到它,但它沒有新的記錄。 – Akshay 2010-07-14 10:09:49