如何选择JSF表中的所有行并删除它们?

时间:2012-05-22 21:01:46

标签: java jsf jsf-2

我有一个带复选框和分页的JSF表。我有以下问题:我想在所有表页中选择所有行并删除它们。简单的方法是创建Java哈希映射并存储密钥。然后Java方法会使用密钥将它们删除到hashmap中,但是如果hashmap超过100万,会发生什么?也许内存泄漏? 也许解决方案是使用这个简单的JavaScript来选择所有复选框:

//Select all checkbox
function selectall(){     
    $('button').click(function() {
        $("[type=checkbox]").prop("checked", true);
    })​     
}

//Unselect all checkbox
function selectall(){     
    $('button').click(function() {
        $("[type=checkbox]").prop("checked", false);
    })​     
}

我面临两个问题: 1.如果我使用JavaScript选择所有复选框,可能只会选择第一页上的复选框,如果我打开第二页,则不会选中复选框。 JavaScript仅适用于一个页面。 2.当我单击删除按钮时,如果我选择JavaScript的所有复选框,Java方法将如何知道每个复选框都被选入表中并删除行? 我怎么能解决这些问题?

1 个答案:

答案 0 :(得分:2)

  

如果我使用JavaScript选择所有复选框,可能只有   如果我打开,将选择第一页上的复选框   第二页将不会选中复选框。

这是事实,因为数据表(甚至整个页面)都会被重新渲染,并且会失去其检查状态。

  

我如何解决这些问题?

专注于您尝试实现的目标。实际上,您不希望在分页数据表中选择所有一百万个条目,但希望删除支持数据表的整个列表或集合。

为什么不添加一个简单清空列表的“全部删除”按钮?那么你根本不需要关心选择框。