2012-03-30 10 views
0

Ich bin sehr seltsames Problem konfrontiert. Nach dem Debuggen von meiner Seite, dachte ich, die gleiche Frage im Forum zu stellen.Seite nicht mit Ajax in Jsf 2.0 gerendert

Problem:: Ich habe 2 JSF Datatables sagen "TableA" und "TableB". Ich habe einige Elemente in TableB und jetzt möchte ich einige Artikel basierend auf Kriterien verschieben, um zu TableA zu wechseln und in TableB gelöscht oder nicht sichtbar zu werden.

Ich kann Elemente in TableA hinzufügen und kann sehen, dass Element aus TableB auch durch Debugger gelöscht wurde, während ich die Elemente in TabelleB druckte, aber die gleichen Änderungen nicht in Benutzeroberfläche widergespiegelt werden.

-Code ist:

<div id="selectedTableId" class="ArtSlected"> 
<h:dataTable id="selectedArtTable" value="#{articleBean.artList1}" var="sel" width="100%" border="0" cellspacing="0" 
      cellpadding="0" columnClasses="center" class="TableStyle"> 
    <h:column> 
    <h:commandButton id="deleteArticle" image="../resources/images/Delete.png" action="#{articleBean.deleteAction}"> 
     <f:setPropertyActionListener target="#{articleBean.articuloPromocionVO}" value="#{sel}"/> 
     <f:ajax render=":articleSelectionForm:artDescTable selectedArtTable" execute="@form"/> 
    </h:commandButton> 
    </h:column> 
    <h:column> 
    <f:facet name="header">#{msgs.mpromo_article_selection_articles_selected}</f:facet> 
    #{sel.articuloNombre} - #{sel.descripcion} 
    </h:column> 
</h:dataTable> 
</div> 

Hier articleSelectionForm ist der Formularname artDescTable zu TableA bezieht sich selectedArtTable auf TableB bezieht.

Ich habe viele Kombinationen für die <f:ajax> Tag versucht, aber nichts funktioniert. Beispiel

<f:ajax render=":articleSelectionForm:artDescTable selectedArtTable" execute="@form" /> 
<f:ajax render=":articleSelectionForm:artDescTable :articleSelectionForm:selectedArtTable" execute="@form" /> 
<f:ajax render=":articleSelectionForm:artDescTable :articleSelectionForm:selectedTableId:selectedArtTable" execute="@form" /> 

Bitte sagen Sie mir, wo ich bin falsch zu verstehen.

+0

Lies ich Ihren Code richtig, dass Sie zwei Formen haben? –

+0

Hallo Matt, ich habe nur eine Form – Leinz

Antwort

0

Es muss die Client-ID der Komponente verweisen. Für den Anfang ist der einfachste Weg, um die richtige Client-ID herauszufinden, die Seite im Browser zu öffnen, rechtsklicken und View Source und suchen Sie die HTML-Darstellung der JSF-Komponente. Es wird so aussehen

<table id="foo:bar:tableId" ...> 

Sie benötigen genau diesen Wert zu übernehmen und das Präfix mit :.

<f:ajax render=":foo:bar:tableId" ... /> 

Wenn es nicht mit : Präfix ist, wird die Standard NamingContainer Trennzeichen, dann wird es auf die aktuell NamingContainer Eltern aufgelöst relativ werden. Solche Komponenten sind <h:form>, <h:dataTable>, <ui:repeat>, Composite-Komponenten usw.

+0

Vielen Dank BalusC ... :-) – Leinz