利用JSF RI实现批量删除
主要代码如下:
<h:form id="editHouse">
<h:dataTable id="book" value="#{ufdemobean._queryResult}" var="q"
styleClass="orders" headerClass="ordersHeader"
rowClasses="evenColumn,oddColumn" rows="4">
<h:column id="column6">
<f:facet name="header">
<f:verbatim>
<h:selectBooleanCheckbox id="allbox"
immediate="false"></h:selectBooleanCheckbox>
<hutputText value="#{msg['right.columnname.SELECT']}"></hutputText>
</f:verbatim>
</f:facet>
<h:selectBooleanCheckbox id="select" value="#{[color=#008000]q.selected}"
immediate="false"></h:selectBooleanCheckbox>[/color]
</h:column>
<h:column id="column1">
<f:facet name="header">
<f:verbatim escape="true">
<hutputText value="#{msg['list.label.NAME']}"></hutputText>
</f:verbatim>
</f:facet>
<hutputText value="#{q.name}"></hutputText>
</h:column>
……
</h:dataTable>
</h:form>
<h:form>
<h:commandButton id="delete" value="#{msg['list.button.DELETE']}"
styleClass="button" action="#{ufdemobean.deleteSelected}">
</h:commandButton>
</h:form>
------------------------------------下面是backing bean
public String deleteSelected() throws SQLException {
int result = 0;
List<Book> selectedDataList = new ArrayList<Book>();
for (Book book : this._queryResult) {
// if (book.id == null)
// continue;
if (book.getSelected()) {
selectedDataList.add(book);
}
}
result = _theBR.deleteSelected(selectedDataList);//调用删除操作的方法
if (result > 0) {
this._msg = "成功删除!";
return "deleteselected:success";
} else {
this._msg = "删除失败!";
return "deleteselected:fail";
}
}
---------------------------------Book 类代码如下
public class Book {
public int id;
public String name;
public String author;
public String press;
public double price;
public Boolean selected;
-----getter和setter方法
}
----------------------------------------------------
_queryResult的定义是List<Book> _queryResult = new ArrayList<Book>();
第一列是一组选择按钮,用于批量删除,可现在问题来了,无论将哪一行的checkbox勾上,点击删除按钮都是删除失败,似乎页面中
<h:selectBooleanCheckbox id="select" value="#{[color=#008000]q.selected}"
immediate="false"></h:selectBooleanCheckbox>[/color]该组件对应的值不会传递到q.selected,即Book类中的selected属性,请高手指点一下为什么值没有传过去?