2014-11-25 66 views
0

嗨,我創建了構建動態表單的複合組件。 我將3個參數傳遞給組件支持bean。其中2個是對象。JSF複合組件參數更新

<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> 

回答

0

據stateHelper問題,我使用存儲這些屬性有關組件初始化,在背襯的bean:

getStateHelper().put("formObject", formObject); 
getStateHelper().put("formDataObject", formDataObject); 

原來它防止他們從更新更新直到您清除狀態助手中的所有屬性,然後再嘗試設置它們。

getStateHelper().remove("formObject"); 
getStateHelper().remove("formDataObject");