我需要幫助來實施CRUD操作。我的應用程序包含一個對象表。每個對象都由一系列屬性(值)來描述。一個屬性使用自定義JSF編輯器進行修改,具體取決於屬性類型。爲具有動態屬性的對象添加/編輯操作
當用戶添加新帳戶時,編輯器列表根據對象的類型確定,並使用custom:include
標籤以表格形式顯示。此自定義標籤用於動態包含編輯器<custom:include src="#{editor.component}">
。 component屬性指向JSF編輯器的位置。
每個編輯器都有一個託管bean,它實現了一個ValueHolder
接口並繼承了AbstractEditor
類。 AbstractEditor包含一個updateEditor方法。
public interface ValueHolder {
String EDITOR_VALUES = "editorValues";
public Object getValue();
}
我使用會話地圖,與編輯器名作爲關鍵字和編輯值值。當用戶修改屬性時,將調用updateEditor方法,並使用編輯器的新值更新映射。
問題出在編輯器後面的bean範圍。如果我使用@SessionScoped bean,則初始化編輯器的代碼不會再次調用,並且我無法處理添加/編輯操作。 @SessionScoped僅用於添加。我曾嘗試使用@RequestScoped,但這些bean經常被調用,我不知道這是否真的很好。
我正在使用JSF2,PrimeFaces 3.0.M4和Spring Web Flow進行導航。
'@ RequestScoped'就是你需要使用這樣的事情,但如果你不喜歡豆子被稱爲很多次,你可以使用'@ SessionScope'和「復位」它(手動!)在'updateEditor()'方法末尾「模擬」初始化! – StepTNT
你能舉個例子嗎? – Seitaridis