2013-05-16 137 views
3

一個有一個頁面是這樣的:更新UI:重複部分JSF Primefaces

<h:form id="form"> 
    <h:panelGroup id="panel"> 
     <ui:repeat id="repeat" value="#{myBean.ojects}" var="item"> 
      <h:panelGroup id="itemPanel"> 

       <h:selectOneMenu ..... > 
        <p:ajax process="@this" update="itemPanel"/> 
        <f:attribute name="item" value="#{item}" /> 
       </h:selectOneMenu ..... > 

      <h:inputText id="value" value="#{item.property}"/> 

      </h:panelGroup> 
     </ui:repeat> 
    </h:panelGroup> 
</h:form> 

我的問題是,經過我改變bean中的對象引用的「屬性」值,並更新「itemPanel 「panelGroup,它永遠不會返回修改後的值,除非我更新我已包裝在ui中的整個panelGroup:repeat。在第一種情況下,我可以在響應中看到更新已發生,只有前一個值。我真的必須只能實現ui的一部分:重複(在改變值的情況下),否則添加,但不會在ui:repeat的其他部分(循環)中提交數據。

UPDATE:

其實我根本不會在乎,我是否需要提交包含整個重複面板或形式,所以當我更新它的值不會改變,但是如果我改變工藝價值,沒有東西都更新.. :(

+0

我已經嘗試了所有可能的組合,我不認爲這是問題 –

+0

有你找到解決方案?我有同樣的問題 –

回答

0

可以嘗試像這樣:

<h:form id="form"> 
    <h:panelGroup id="panel"> 
     <ui:repeat id="repeat" value="#{myBean.ojects}" var="item" varStatus="varStatus"> 
      <h:panelGroup id="itemPanel"> 

       <h:selectOneMenu ..... > 
        <p:ajax process="@this" update="repeat:#{varStatus.index}:itemPanel"/> 
        <f:attribute name="item" value="#{item}" /> 
       </h:selectOneMenu ..... > 

       <h:inputText id="value" value="#{item.property}"/> 

      </h:panelGroup> 
     </ui:repeat> 
    </h:panelGroup> 
</h:form>