2011-09-16 9 views
5
<p:dataTable id="id" value="#{bean.soemList}" var="account"> 
    <p:commandLink value="#{account.id}" action="#{bean.methodCall}" 
     update="dialogID" oncomplete="dlg1.show();"> 
    </p:commandLink> 

... bağlantısı dışında p:dataTable olduğundabir p gelen CompoNet'i güncelleyemiyorsunuz: commandLink 'update' özelliğini Link p luk kısmını ise: dataTable

<p:dialog header="#{i18n.details}" widgetVar="dlg1" modal="true" height="200" width="600"> 
    <h:panelGroup id="dialogID" layout="block"> 
     <h:outputLabel value="#{bean.var1}"></h:outputLabel> 
    </h:panelGroup> 
</p:dialog> 

p:dialog güncellenir, ama ne zaman bağlantı p:dataTable, p:dialog güncelleştirilmiş değeri gösterilmez. Bağlantıyı p:dataTable'da tutmam gerekiyor. Güncellenecek olan bileşen dataTable'da değil.

+0

Bean.methodCall kodunuzu gönderir misiniz? Aynı sorun var – JsfLearner

+0

@SfsLearner: Fasulye yönteminde yalnızca değişkenin değerini değiştiriyorum. Değiştirilen değer, p: dialog içinde bulunan h: outputLabel içinde görüntülenmelidir, ancak sorun hala eski değeri değil, yeni değeri gösterir. Ancak, bu değişkenin değerinin fasulye yönteminde değiştirilmesine karşın, yeni değer sayfaya yansıtılmamaktadır. public String methodCall() { this.var1 = true; } bu durumda yöntem aramadan sonra sayfa hala 'false' – Amruta

cevap

0

Sadece <p:commandLink> numaralı veriye ulaşabildim Bu iletişim kutusunun öğeleri kendi <h:form> içinde yer alıyorsa, bir iletişim kutusunun bir bileşeni olan update.

Örnek:

<p:dialog appendToBody="true" ...> 
    <h:form id="dialogForm" ...> 
    ... 
    </h:form> 
</p:dialog> 

<p:dataTable ...> 
    <h:form id="dataTableForm" ...> 
    ... 
    </h:form> 
</p:dataTable> 

Ayrıca ben iletişim kutusuna niteliği, appendToBody="true" eklendi unutmayın. Bir AJAX güncellemesinden sonra diyaloğun kimliğine göre konumlandırılması önemlidir.

+0

Merhaba maple görüntüler, cevap için teşekkürler .. kodumda .. p: dataTable ve p: dialog ortak

etiketi içinde mevcut .. – Amruta

+0

@Amruta, Yes, bunu yapma. Her iletişim kutusuna kendi iç formunu vermek ve sayfadaki diğer bileşenler için ortak bir form vermek için refactor. Ayrıca, appendToBody = "true" etiketini de uygulamayı unutmayın. –

+0

': mainFormId: idOfThePanelCantainingDialog' kullandığımda, işe yaradı. Ayrı formlar kullanmadım. Cevabınız için teşekkürler n e yolları :). – Amruta

0

Merhaba size

<form id="myformid"> 
..... 
    <p:commandLink value="#{account.id}" action="#{bean.methodCall}" update=":myformid:dialogID" oncomplete="dlg1.show();"> 
    </p:commandLink> 
.... 
<p:dialog header="#{i18n.details}" widgetVar="dlg1" modal="true" 
     height="200" width="600"> 
     <h:panelGroup id="dialogID" layout="block"> 
     <h:outputLabel value="#{bean.var1}"></h:outputLabel> 
.... 
</form> 

Umarım yardımcı olur aşağıdaki gibi form id eklemek çalıştım!

İlgili konular