我有以下代码: JSF PAGE
<h:dataTablevalue="#{bean.records}" var="app">
<h:column>
<h:selectBooleanCheckbox value="#{bean.checked[app.id]}"/>
<f:facet name="footer">
<h:commandButton value="submit" action="#{bean.submitPublic}"/>
</f:facet>
</h:column>
和BEAN代码:
@SessionScoped
public class bean
private Map<Long, Boolean> checked = new HashMap<Long, Boolean>();
private List<Application> checkedItems = new ArrayList<Application>();
public void submit() {
for (Application app : getRecords()) {
if (checked.get(app.getId())) {
checkedItems.add(app);
}
}
checked.clear();
//here logic for selected apps
}
public Map<Long, Boolean> getChecked() {
return checked;
}
public void setChecked(Map<Long, Boolean> checked) {
this.checked = checked;
}
问题是当我点击按钮时,没有提交选定的值。 我正在读这篇文章: How to use <h:selectBooleanCheckbox> in <h:dataTable> to select multiple rows?
以同样的方式做了一切,但它不起作用。
答案 0 :(得分:1)
选择Checkbox
时更新数据表。
<h:selectBooleanCheckbox value="#{bean.checked[app.id]}">
<f:ajax event="valueChange" render=":YOUR_FORM_ID:YOUR_TABLE_ID"/>
</h:selectBooleanCheckbox>