簡體   English   中英

JSF復合組件參數更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM