[英]JSF Composite Component argument update
嗨,我已經創建了構建動態表單的復合組件。 我將3個參數傳遞給支持bean的組件。 其中2個是對象。
<p:outputPanel id="dynaForm" >
<p:outputPanel rendered="#{formTest.dynamicForm!=null}" >
Form in parent: #{formTest.dynamicForm.id}<br/>
<cc:dynamicFormComponent
formObject="#{formTest.form}"
formDataObject="#{formTest.recordObject}"
mode="1"
/>
</p:outputPanel>
</p:outputPanel>
它在靜態使用時效果很好,但是當我嘗試使用selectOneMenu動態更改formObject
並更新dynaForm
面板時,它第一次構建表單,但是當我嘗試更改表單時屬性未更新時,它會記住第一個選擇。 僅在使用對象屬性時才會發生這種情況,如果我使用字符串,它通常會發生變化。 我在面板和復合組件中輸出表單的ID,看來復合組件不想感知更新后的值。
這是組件代碼的基礎:
<cc:interface componentType="dynamicFormComponentGenerator" >
</cc:interface>
<cc:implementation>
Form in component: #{cc.attrs.formObject.id}
<cc:implementation>
這是stateHelper問題,我使用以下命令將這些屬性存儲在組件初始化中的后備bean中:
getStateHelper().put("formObject", formObject);
getStateHelper().put("formDataObject", formDataObject);
事實證明,在您再次嘗試設置它們之前,從狀態幫助器中清除了所有屬性之前,它們可以阻止更新。
getStateHelper().remove("formObject");
getStateHelper().remove("formDataObject");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.