gpt4 book ai didi

java - 单击复选框时如何调用bean方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:22:12 27 4
gpt4 key购买 nike

当我单击复选框时从 bean 调用 selectAll Java 方法的合适方法是什么?

<f:facet name="header">
<h:selectBooleanCheckbox binding="#{bean.selectAll}" onclick="highlight(this)" class="checkall"/>
</f:facet>

绑定(bind) 无效。我只想执行这个 Java 方法中的代码。

编辑

private HashMap<String, Boolean> selected = new HashMap<>();
public void selectAll() throws Exception {

String SqlStatement = null;

if (ds == null) {
throw new SQLException();
}

Connection conn = ds.getConnection();
if (conn == null) {
throw new SQLException();
}

SqlStatement = "SELECT ID FROM ACTIVESESSIONSLOG";

PreparedStatement ps = null;
ResultSet resultSet = null;
int count = 0;

try {
conn.setAutoCommit(false);
boolean committed = false;
try {
ps = conn.prepareStatement(SqlStatement);
resultSet = ps.executeQuery();
selected.clear();

while (resultSet.next()) {

selected.put(resultSet.getString("ID"), true);
}
/*
for (Map.Entry<String, Boolean> entry : selectedIds.entrySet()) {
entry.setValue(true);
}

*/ conn.commit();
committed = true;
} finally {
if (!committed) {
conn.rollback();
}
}
} finally {
ps.close();
conn.close();
}
}

最佳答案

使用 <f:ajax> 发送 ajax 请求。

<h:selectBooleanCheckbox value="#{bean.selectAll}" onclick="highlight(this)" class="checkall">
<f:ajax listener="#{bean.onSelectAll}" render="@form" />
</h:selectBooleanCheckbox>

private boolean selectAll;

public void onSelectAll(AjaxBehaviorEvent event) {
// If you're using a boolean property on the row object.
for (Item item : list) {
item.setSelected(selectAll);
}

// Or if you're using a Map<Long, Boolean> on item IDs
for (Entry<Long, Boolean> entry : selected.entrySet()) {
entry.setValue(selectAll);
}
}

public boolean isSelectAll() {
return selectAll;
}

public void setSelectAll(boolean selectAll) {
this.selectAll = selectAll;
}

理想情况下,bean 应按 @ViewScoped 放置在 View 范围内使其在同一 View 的 ajax 请求中保持 Activity 状态。

不要使用 binding除非你有一个非常好的理由。它旨在绑定(bind)整个 UIComponent到允许动态组件操作的 bean,但通常有更简单且不那么突兀的方法。

关于java - 单击复选框时如何调用bean方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10740107/

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