父表我有這樣的結構:使用commandLink更新是孩子到另一個表
<h:dataTable id="baselist">
<h:dataTable id=childlist">
<p:commandLink update="should only update childlist">
</h:dataTable>
</h:dataTable>
我用盡了一切我能想到的,但我只得到錯誤說,childlist
無法找到。這種方式不可能更新嗎?
父表我有這樣的結構:使用commandLink更新是孩子到另一個表
<h:dataTable id="baselist">
<h:dataTable id=childlist">
<p:commandLink update="should only update childlist">
</h:dataTable>
</h:dataTable>
我用盡了一切我能想到的,但我只得到錯誤說,childlist
無法找到。這種方式不可能更新嗎?
請注意,子表數據表的id中包含索引號。
例如:
所述的childList表的父表的第一行中的ID是::form:baselist:0:childlist
所述的childList表的父表的第二行中的ID爲: :form:baselist:1:childlist
中的childList表的父表的第三行中的ID是::form:baselist:2:childlist
等等...
解決方案:
更新父表,以便一切都得到更新和同步,包括在所有行
如表的childList。
update=":form:baselist"
Unrealated:
您可以通過右鍵看到你的元素完全合格ID點擊瀏覽器和查看頁面源渲染的頁面。
是的,我試過了,它可以工作;我的問題是,爲什麼我不能只更新子表。我試過:'@ parent',它不會更新它看起來的任何東西;並且還提供了完整的合格路徑,即使我可以看到它是正確的,但仍不能找到id的例外情況。 – nivis
你可以嘗試使用#{component.parent.clientId}
,但你不會像你想象的那樣獲得更多。
JSF通常會重建整個結構看答案:Does Facelets rebuild the whole page if Ajax is trigger from a form and updates another?
此外,如果已修改baselist
,那麼你會得到進入問題爲:0,:1
namingcontainer ID將變得不一致。 例如如果您從baselist
中刪除第一個元素,JSF將使用新的id重新創建視圖。 so :form:baselist:1:childlist'
將變成:form:baselist:0:childlist
等
我不知道你是否會得到一個錯誤,但肯定這會造成一些遲早的一些痛苦。
你可以試試'update =「@ parent」' – kolossus