2011-01-11 10 views
5

Sayfam, <ui:repeat> kullanarak bir öğe listesi üzerinde yinelenerek oluşturulan birkaç alandan oluşur. Bu bir basit örneği düşünün:JSF 2.0: UI'de tek bir öğeyi yeniden oluşturma/güncelleştirme: AJAX kullanarak yineleme yineleme

<h:form id="form">  
    <ui:repeat id="repeatContainer" var="item" value="#{testBean.items}" varStatus="status"> 
     <h:outputText value="#{item.title}: "/> 

     <!-- I want to re-render only a single one of these fields --> 
     <h:outputText id="valueContainer" value="#{item.value}"/><br/>   
    </ui:repeat> 
</h:form> 

Şimdi, yeniden işlemek istiyorum (yalnızca) AJAX kullanarak bu listeye içinde belirli elemanın ait valueContainer (diyelim ki, dizin 1'e sahip eleman). Çünkü,

  • Bir mutlak tanımlayıcı yol ile yeniden işlemek bileşeni tanımlamak gerekir:
    <!-- Works, but renders all items: --> 
    <f:ajax render=":form"/> 
    
    <!-- This is what I actually want to achieve (does not work, comp. not found): --> 
    <f:ajax render=":form:repeatContainer:1:valueContainer"/> 
    
    <!-- Does not work (component not found): --> 
    <f:ajax render=":form:repeatContainer"/> 
    
    <!-- Does not work (component not found): --> 
    <f:ajax render=":form:repeatContainer:1"/> 
    
    <!-- Does not work (component not found): --> 
    <f:ajax render=":form:1"/> 
    
    <!-- Does not work (component not found): --> 
    <f:ajax render=":form:1:valueContainer"/> 
    
    <!-- Does not work (no error message, but does nothing): --> 
    <f:ajax render=":form:repeatContainer:valueContainer"/> 
    

    Benim gereksinimleri

    şunlardır: Zaten olmadan herhangi bir şans bu kombinasyonlardan her denedi güncellemesini tetikleyen düğme, ağacında, bileşen ağacında tamamen farklı bir yerdedir. bu tür I MTU/AJAX hiç kullanıyorum neden gündeme koyar çünkü
  • ihtiyacım
  • ..., sayfanın tamamını veya (@all/@form kullanarak) formunu bana yararsız edilir Yeniden render PrimeFaces <p:dataGrid> hücreleri ile aynı şeyi elde etmek için (yani, belirli bir hücrenin sadece belirli bir alt bileşenini güncelleştirin), ancak bunun aynı soruna indirgendiğini varsayalım.

Şu anda baktığım şu an için kolay bir çözüm olmalı ?!

cevap

0

Bunun Mojarra 2.0.2'deki iki ayrı hatadan kaynaklandığı görülüyor. Aşağıdaki iplik ilgili konuya değiniyor: Benim durumumda How to refer to dataTable parent within the dataTable?

, ben PrimeFaces yerine <h:dataTable> ait <p:dataGrid> kullanıyorum, ama aynı belirtiler muzdarip görünüyor. Referanslar başarısız. Bunun, UIComponent#findComponent()'daki bir hata veya JSF uygulamasının temel yöntemleri ile ilgili olduğunu varsayalım.

Şu anda bu soruna bir çözüm bulunmadığı anlaşılıyor ... JSF uygulamalarının sabitlenmesini beklemenin haricinde ... başkasının başka önerileri varsa, bunları eklemekten çekinmeyin. outputPanel ve gerçek

0

sorun

bir baharındaki formu yerleştirerek s yüzleri çözülebilir. Formu p: outputPanel içine yerleştirmek, tek tek satırları güncellemeye yardımcı olmaz.
+0

Maalesef için Autoupdate ayarlamak, ama bu soruya nasıl cevap görmüyorum: – sleske