首页 > 解决方案 > 覆盖两个不同 portlet 的数据表之间的记录

问题描述

我使用 Primefaces 和 JSP,在我的页面内有 2 个独立的 portlet,一个位于另一个之上,每个都有一个数据表。每个表的列数不同(第一个为 3,第二个为 10)

当页面加载时,上表中的一条或多条记录会下降到下表,从而隐藏和覆盖属于后者的记录。这是随机发生的,而不是在每次页面加载时。

数据表的 ID 不同。

我能做些什么来解决这个问题吗?

标签: jspdatatableprimefaces

解决方案


经过深入的代码调试,我发现在创建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>

推荐阅读