如何选择 PrimeFaces TreeTable 中的所有内容?

2024-04-03

我有一个 PrimeFaces 树表,想添加一个复选框,允许用户选择/取消选择全部。

这是我的 xhtml 的摘录

<p:selectBooleanCheckbox
        itemLabel="Select all"                                      
        value="#{mainViewBean.selectAll}">
        <p:ajax listener="#{mainViewBean.onSelectAll}"
            update="@this :mainForm" />
    </p:selectBooleanCheckbox>  

    <p:treeTable id="treeToAssign"
        value="#{mainViewBean.treeValue}" var="vh"
        selectionMode="checkbox"
        selection="#{mainViewBean.treeSelection}">
        <f:facet name="header">
            Tree Table                                                  
        </f:facet>                                                              
        <p:column>                                      
            <h:outputText value="#{vh.name}" />
        </p:column>                                 
    </p:treeTable>

这是我的 bean 方法

private TreeNode treeValue;
private TreeNode[] treeSelection;
private boolean selectAll;

public void onSelectAll() {             
    List<TreeNode> selection = new ArrayList<>();
    for (TreeNode node : treeValue.getChildren()) {
    node.setSelected(selectAll);
        selection.add(node);
    }

    treeSelection = selection.toArray(new TreeNode[selection.size()]);
}

我最初尝试只是设置NODE.setSelected(selectAll);,但这不起作用,所以我尝试手动手动填充treeSelection以及。

我觉得这应该很简单,但一直无法弄清楚,有什么建议吗?

Thanks


  • 至少让你的豆子@ViewScoped
  • 创建附加字段private Set<TreeNode> selectedNodesSet = new HashSet<>();
  • 使用递归进行选择/取消选择
public void onSelectAll() {
    for (TreeNode node : treeValue.getChildren()) {
        recursiveSelect(node);
    }

    treeSelection = new TreeNode[selectedNodesSet.size()];
    Iterator<TreeNode> iterator = selectedNodesSet.iterator();
    int index = 0;

    while (iterator.hasNext()) {
        treeSelection[index++] = iterator.next();
        iterator.remove();
    }
}

private void recursiveSelect(TreeNode node) {
    node.setSelected(selectAll);

    if (selectAll) {
        selectedNodesSet.add(node);
    } else {
        selectedNodesSet.remove(node);
    }

    for (TreeNode n : node.getChildren()) {
        recursiveSelect(n);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何选择 PrimeFaces TreeTable 中的所有内容? 的相关文章

随机推荐

  • Rails 字体 CORS 政策

    我无法为 CORS 策略加载此字体 Folder app assets fonts Inter UI var woff2 Error 访问字体位于 http localhost 3000 assets Inter UI var e2e323
  • android中处理html webview的onclick功能

    我正在尝试处理 android referred 中 html 的 onclick在此输入链接描述 https stackoverflow com questions 4065312 detect click on html button
  • iOS 中如何将代码块分派到同一个线程?

    问题的主要方面 这是关于 iOS 的 我能否以某种方式分派代码块 使它们全部 a 在后台运行并且 b 在同一个线程上运行 我想在后台运行一些耗时的操作 但这些操作必须在同一线程上运行 因为它们涉及资源 而不能在线程之间共享 如果需要 更多技
  • 在 ASP.NET Core 中,如何在Configure() 中使用在ConfigureServices() 中设置的服务?

    我编写了一项有助于配置的服务 该服务在 Startup 类的 ConfigureServices 方法中设置为 public void ConfigureServices IServiceCollection services servic
  • Java JComboBox 自动完成[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JSF 服务层

    我不确定我在 JSF 中使用 MVC 环境的方法是否是最好的方法 因为我试图充分利用 JSF 所以我想知道我的服务层 或模型 用 MVC 术语来说 应该如何 设计 我知道视图与控制器的比例应该是 1 比 1 排除例外 现在我应该以什么方式设
  • 从文件中 read() - 阻塞行为与非阻塞行为

    假设我们使用以下命令打开了一个文件fopen 并从收到的文件指针中 使用以下命令获取文件描述符fileno 然后我们做很多 gt 10 8 随机read 该文件中相对较小的块 大小在 4 字节到 10 KB 之间 这是预期的行为吗read
  • 测试有效输入 Python

    因此 我有一个完成的程序 它接受带有银行帐户信息的输入文件并对其进行解析并允许使用一些不同的实用程序 其中一个实用程序是将事务添加到 数据库 只是一个日志文件 程序提示用户输入 w 或 d 然后输入一个金额 浮点数 这代表存款或取款 X 金
  • Vstest.console.exe 找不到 nunit 测试

    我有 VS 2017 和 net 4 6 尝试使用 vstest console 通过 cmd 提示符运行时 vstest console exe bin Release Tests dll UseVsixExtensions true 我
  • 如何用css制作透明的羽毛首选项

    我想为一些图像添加羽毛 这是我想要最终得到的结果 我意识到这个问题之前已经发布过 并且我已经使用例如box shadow attr 但我对这个方法有一个问题 我要把这张照片放在webm 所以背景并不总是保持不变 这就是为什么我必须使羽毛透明
  • 如何将列表拆分为大小相等的块?

    如何将任意长度的列表拆分为大小相等的块 See also How to iterate over a list in chunks https stackoverflow com q 434287 To chunk strings see
  • 带 json 参数的 Curl GET 请求

    我正在尝试通过 cURL 从命令提示符向远程 REST API 发送 GET 请求 如下所示 curl X GET H Content type application json H Accept application json http
  • Flutter 如何将数据列表保存到本地存储

    我正在 flutter 上开发电影发现应用程序 我需要将正在播放的电影列表保存在本地存储上以供离线使用 那么我该怎么做 Future gt getNowPlayingMovies 异步 最终字符串现在正在播放 https api themo
  • 如何动态判断Objective-C属性类型?

    我正在尝试动态确定 Objective C 中属性的类型 根据我在本网站和其他地方读到的内容 我相信我正在做正确的事情 但是 我的代码不起作用 下面的代码片段演示了这个问题 尝试获取 backgroundColor 和 frame 的属性信
  • 使用 API 发布不包含图片、标题或元描述的链接 PHP

    使用 API 发帖时 我收到以下消息 https www facebook com weather warnings posts 329128793830700 https www facebook com weather warnings
  • EntityManager.createQuery() 抛出 NullPointerException

    每次都会遇到 NullPointerExceptionEntityManager createQuery or EntityManager createNamedQuery 叫做 我正在使用 Glassfish 4 0 Hibernate
  • 删除SQL Server中删除SQL文档后的弹出消息

    Goal 在 SQL Server 中移除 删除 SQL 文档时不显示弹出窗口 Problem 在我下载最新版本的 SQL Server 之前 当我删除 SQL 文档时 它没有显示任何有关状态的弹出窗口 当我下载最新版本的 SQL Serv
  • Django DateField 默认选项

    我有一个具有日期时间字段的模型 date models DateField Date default datetime now 当我在内置的 django admin 中检查应用程序时 DateField还附加了时间 因此如果您尝试保存它
  • 如何将联系人添加到 ActiveCampaign API v3 中的列表

    根据v3docs https developers activecampaign com v3 reference lists我应该能够使用联系人 API 将联系人添加到列表中 但我不知道如何执行此操作 因为我在下面看不到任何相关列表Con
  • 如何选择 PrimeFaces TreeTable 中的所有内容?

    我有一个 PrimeFaces 树表 想添加一个复选框 允许用户选择 取消选择全部 这是我的 xhtml 的摘录