我試圖使用ajax重新渲染一個對象列表中的對象的列表容器時,按鈕按下按鈕刪除對象的子對象列表中的元素。但我無法找到子列表對象的父容器。f:嵌套的UI中的ajax:重複
將Java對象被表示爲這樣
IE
public class Advertisements{
List<object1> messages;
//getters setters etc.
}
public class object1{
List<object2> stops;
}
現在我試圖與每個停止刪除按鈕(第二嵌套對象列表)相關聯,並重新呈現這些容器用f:ajax渲染停止。
IE
<h:form id="campaign" >
<ui:repeat id="messages" var="message" value="#{Advertisements.active.messages}" >
<h:panelGroup id="stopList" binding="#{waga}">
<ui:repeat id="temp" var="stop" value="#{message.stops}" >
<div class="col-sm-2">
<h:outputLabel value="#{stop.name}"/>
</div>
<div class="col-sm-1">
<h:commandLink action="#{Advertisements.delete(stop)}" class="">
<i class="glyphicon glyphicon-remove"></i>
<f:ajax render=":#{waga.clientId}"/>
</h:commandLink>
</div>
</ui:repeat>
</h:panelGroup>
</ui:repeat>
</h:form>
現在,我已經試過了幾個渲染ID的不同排列的,但我不明白,爲什麼我就不能執行對panelGroup中的Ajax請求。當使用
這
<h:panelGroup id="stopList" binding="#{waga}">
#{waga.clientId}
我已經能夠檢測值,並將其唯一性地映射每個按鈕的Ajax渲染到正確的容器ID IE
的ID競選的消息-O-STOPLIST列表中的每個停止位都引用此特定的整數標識符,並且這在整個剩餘消息中是一致的。
我無法弄清楚如何通過絕對或相對ID正確引用。它似乎只在panelGroup是兄弟組件時才起作用,但當然這不是我正在尋找的行爲,我想重新渲染每個站點的容器以顯示沒有刪除站點的列表。
有沒有人有任何洞察力,爲什麼絕對id不能找到組件或我可能做錯了什麼?
糾正我,如果我錯了,但據我所知UI:重複不創建DOM樹的成分? 無論使用這個,我只是得到錯誤信息 組件ID:campaign:messages:0:停止未找到 – Yveris 2014-10-21 15:10:39
oops ...是的,ui:repeat不會在dom樹中創建組件,但我記得在ajax執行和渲染屬性中引用它們。顯然,我記得錯了。我改變了答案,並把panelGroup放回去了。它以這種方式工作。 – 2014-10-22 06:29:43