在JSF中使用Checkbox删除行

时间:2015-04-12 00:58:27

标签: jsf ejb rows

我正在尝试使用复选框删除多行员工数据。但是我很难找到一种方法来做到这一点。以下是一些代码:

DeleteEmployees.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">

<f:loadBundle basename="resources.application" var="msg"/>

<head>
    <title><h:outputText value="#{msg.welcomeTitle}" /></title>
</head>
<h:body>
    <h:dataTable value="#{empController.list}" var="emp" border="2">
        <h:column>
            <f:facet name="header">
                <h:outputText value="First Name"/>
            </f:facet>
            <h:outputText value="#{emp.firstName}"/>
        </h:column>

        <h:column>
            <f:facet name="header">
                <h:outputText value="Last Name"/>
            </f:facet>

            <h:outputText value="#{emp.lastName}"/>
        </h:column>

        <h:column>
            <f:facet name="header">
                <h:outputText value="Email"/>
            </f:facet>

            <h:outputText value="#{emp.email}"/>
        </h:column>

        <h:column>
            <f:facet name="header">
                <h:outputText value="Phone"/>
            </f:facet>

            <h:outputText value="#{emp.phone}"/>
        </h:column>

        <h:column>
            <f:facet name="header">
                <h:outputText value="Hire Date"/>
            </f:facet>

            <h:outputText value="#{emp.hireDate}"/>
        </h:column>

        <h:column>
            <f:facet name="header">
                <h:outputText value="Manager ID"/>
            </f:facet>

            <h:outputText value="#{emp.managerId}"/>
        </h:column>

        <h:column>
            <f:facet name="header">
                <h:outputText value="Department ID"/>
            </f:facet>

            <h:outputText value="#{emp.departmentId}"/>
        </h:column>

        <h:column>
             <f:facet name="header">Delete</f:facet>
                 <h:form>
                     <h:selectBooleanCheckbox value="#{empController.checked[emp.id]}"/>    
                </h:form>
             </f:facet>
        </h:column>
    </h:dataTable>

    <h:commandButton value="Delete Employees" action="#{empController.delEmp}"/>
</h:body>
</html>

在我的Managed bean中,我有这个方法来删除ID。但是,对象不会被删除。我需要一些指导,谢谢!

public void delEmp(){
    list = em.getAllEmployees();

    for(Employee e : list){
        if(checked.get(e.getId())){
            em.deleteEmployee(e.getId());
        }
    }
    checked.clear();
}

1 个答案:

答案 0 :(得分:0)

您的h:commandButton未嵌套在h:form中。它需要嵌套以提交表单数据。请注意,这不是JSF限制,而是HTML限制。

另见