我有一个<ice:dataTable>,我想在每一行中添加一个复选框。我试图添加一个<ice:selectManyCheckbox>,但是它显示了一个空列,并且没有出现复选框。
<ice:selectManyCheckbox id="customTransChbx" partialSubmit="true">
<f:selectItems id="SlctLangItms" value="#{employee.s}" />
</ice:selectManyCheckbox>
<ice:dataTable id="employeedatatable" value="#{employee.model}" var="emp" rows="5">
<ice:column>
<ice:checkbox for="customTransChbx" index="#{emp.id}" rendered="true" />
</ice:column>
</ice:dataTable>如何通过<ice:dataTable>中的复选框选择多行
更新:我还用Map尝试了<ice:selectBooleanCheckbox>
public class Employee {
private Map<Long, Boolean> checked = new HashMap<Long, Boolean>();
public void preRender(ComponentSystemEvent event) throws Exception {
List<Employee> list = employeeService.getEmployees();
for (Employee employee : list)
checked.put(employee.getId(), false);
}
}使用
<ice:dataTable id="employeedatatable" value="#{employee.model}" var="emp" rows="5">
<ice:column>
<ice:selectBooleanCheckbox value="#{employee.checked[emp.id]}" />
</ice:column>
</ice:dataTable>当试图在操作方法中获取选中的列表时,映射中的所有值都是false,甚至是选定的值。为什么选中的值没有放在Map中?
UPDATE2:我尝试了旧的普通html方式,如下所示:
<input type="checkbox" name="toDelete" value="#{emp.id}" />
HttpServletRequest request = (HttpServletRequest) FacesContext .getCurrentInstance().getExternalContext().getRequest(); String[] checkedValues = request.getParameterValues("toDelete");
问题是checkedValues数组总是空的吗?
发布于 2011-11-24 12:29:21
请确保datatable和按钮处于相同的表单中。
https://stackoverflow.com/questions/8230451
复制相似问题