gpt4 book ai didi

jsf - 如何选择 with 的多行

转载 作者:行者123 更新时间:2023-12-02 08:52:46 27 4
gpt4 key购买 nike

我使用<h:dataTable>列出数据库中的数据。我们在页面中有很多记录,现在我想选择多条记录,每行都有一个复选框。我怎样才能实现这个目标?

最佳答案

我假设您的实体设计良好,具有唯一的技术标识符,例如来自数据库的自动增量序列。

public class Entity {

private Long id;
// ...
}

如果没有,您需要添加它。

然后,添加 Map<Long, Boolean>绑定(bind)到表的 bean 的属性。

private Map<Long, Boolean> checked = new HashMap<Long, Boolean>();

(预初始化也可以发生在(后)构造函数中,你可以选择,至少 JSF 不会为你做这件事;哦,给它一个 getter 方法,setter 不是必需的)

然后,添加一个带有复选框的列,该复选框通过实体 ID 作为键映射到 bool 值。

<h:dataTable value="#{bean.entities}" var="entity">
<h:column>
<h:selectBooleanCheckbox value="#{bean.checked[entity.id]}" />
</h:column>
...
</h:dataTable>
<h:commandButton value="Delete" action="#{bean.delete}" />

现在,在与删除按钮关联的操作方法中,您可以收集并删除选中的项目,如下所示:

public void delete() {
List<Entity> entitiesToDelete = new ArrayList<Entity>();

for (Entity entity : entities) {
if (checked.get(entity.getId())) {
entitiesToDelete.add(entity);
}
}

entityService.delete(entitiesToDelete);
checked.clear();
loadEntities();
}

关于jsf - 如何选择<h :dataTable> with <h:selectBooleanCheckbox>的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7266189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com