【问题标题】:Overwriting of records between datatables of two differerent portlets覆盖两个不同 portlet 的数据表之间的记录
【发布时间】:2020-10-06 09:29:51
【问题描述】:
我使用 Primefaces 和 JSP,在我的页面中有 2 个独立的 portlet,一个位于另一个之上,每个都有一个数据表。每个表的列数不同(第一个为 3,第二个为 10)
当页面加载时,上表中的一条或多条记录会下降到下表,从而隐藏和覆盖属于后者的记录。这是随机发生的,而不是在每次页面加载时。
Datables 的 ID 不同。
有什么办法可以解决这个问题吗?
【问题讨论】:
标签:
jsp
datatable
primefaces
【解决方案1】:
经过深度代码调试,我发现在创建datatable时,Yahoo的UI“yui-rec”元素没有被创建和逐步处理,即yui-rec0, yui-rec1, ..., yui-recN第一张桌子,yui-rec(N+1), .... yui-rec(N+M) 来自第二张桌子。取而代之的是,前 N 个元素中的一些元素已经被发现存在,然后移到了第二个表中。
通过在每个 portlet 的 JSP 中重新定义 yui-rec ID 解决了这个问题:
<script type="text/javascript">
updateID = function() {
var table1 = document.getElementById('view<portlet:namespace/>:table1')
Array.from(table1.getElementsByTagName('tr')).forEach(function(item) {
if (item.id.includes('yui-rec')) {
item.id=item.id+'_'
}})
}
<script>