Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击复选框时如何调用bean方法_Java_Jsf_Jsf 2 - Fatal编程技术网

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

Java 单击复选框时如何调用bean方法,java,jsf,jsf-2,Java,Jsf,Jsf 2,单击复选框时,从bean调用selectAllJava方法的合适方式是什么 <f:facet name="header"> <h:selectBooleanCheckbox binding="#{bean.selectAll}" onclick="highlight(this)" class="checkall"/> </f:facet> 用于发送ajax请求 与 private boolean selectAll; SelectAll上的

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

<f:facet name="header">
      <h:selectBooleanCheckbox  binding="#{bean.selectAll}" onclick="highlight(this)" class="checkall"/>
</f:facet>
用于发送ajax请求


private boolean selectAll;
SelectAll上的公共无效(AjaxBehaviorEvent事件){
//如果对行对象使用布尔属性。
用于(项目:列表){
item.setSelected(选择全部);
}
//或者,如果您在项目ID上使用映射
对于(条目:selected.entrySet()){
entry.setValue(选择全部);
}
}
公共布尔值isSelectAll(){
返回selectAll;
}
公共void setSelectAll(布尔selectAll){
this.selectAll=selectAll;
}
理想情况下,bean应该通过
@ViewScoped
放置在视图范围中,以使它在同一视图上的ajax请求中保持活动状态


除非有很好的理由,否则不要对bean属性使用
绑定。它的目的是将整个
UIComponent
绑定到允许动态组件操作的bean上,但通常有更简单、更不显眼的方法。

谢谢!我可以再问你一个问题吗:当我选中复选框时,代码是有效的。但是,当我取消选中复选框时,如何调用Java方法
uncheckAll
?只要检查
onSelectAll()方法中
selectAll
的值,如果它是
true
false
。我用
onSelectAll()
方法的示例实现编辑了答案。希望这已经足够自我解释了。我正在使用一种稍微不同的方法。我想在我的情况下,我必须改变布尔值?如果我可以调用第二个java方法来更改hashmap值,这将非常简单。是的,使用
selectAll
的值来更改它。然而,所有这些DB交互逻辑都很奇怪。你应该已经拿到物品清单了。项目列表应该已经加载到视图范围的托管bean的(post)构造函数中。我使用延迟加载。如果没有SQL语句和hashmap,就不可能拥有所有ID。
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();
        }
    }
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;
}