Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
Jsf dataGrid内dataTable的行选择在Primefaces中不起作用_Jsf_Primefaces - Fatal编程技术网

Jsf dataGrid内dataTable的行选择在Primefaces中不起作用

Jsf dataGrid内dataTable的行选择在Primefaces中不起作用,jsf,primefaces,Jsf,Primefaces,我使用primefaces显示datatables的datagrid,如下所示- Facelets页面: <h:form name="form"> <p:dataGrid value="#{routeEditingBean.routes}" var="route" columns="1"> <p:column> <h:outputText value="#{r

我使用primefaces显示datatables的datagrid,如下所示-

Facelets页面:

<h:form name="form">
        <p:dataGrid value="#{routeEditingBean.routes}" var="route"
            columns="1">
            <p:column>
                <h:outputText value="#{route.routeId}" />
            </p:column>
            <p:dataTable value="#{route.routeDetailses}" var="rd"
                rowKey="rd.id.employeeId"
                selection="#{routeEditingBean.selectedRouteDetails}">

                <p:column>
                    <h:outputText value="#{rd.id.employeeId}" />
                </p:column>
                <p:column selectionMode="multiple">
                </p:column>
            </p:dataTable>
            <p:commandLink process="@all"
                actionListener="#{routeEditingBean.display()}">
                <p:graphicImage library="images" name="add-car.jpg"></p:graphicImage>
            </p:commandLink>
        </p:dataGrid>
    </h:form>
支持bean:

@ManagedBean
@ViewScoped
public class RouteEditingBean implements Serializable {
/**
 * 
 */
private static final long serialVersionUID = 1L;
List<RouteMaster> routes;
List<RouteDetails> selectedRouteDetails;

RouteMaster delrb;

public RouteEditingBean() {
    // TODO Auto-generated constructor stub
    routes = new ArrayList<RouteMaster>();

    Session session = HibernateUtil.getSessionFactory().openSession();
    org.hibernate.Transaction transaction = null;
    try {
        HttpSession httpsession = (HttpSession) FacesContext
                .getCurrentInstance().getExternalContext()
                .getSession(false);
        LoginBean lb = (LoginBean) httpsession.getAttribute("loginBean");
        transaction = session.beginTransaction();
        Criteria c = session.createCriteria(RouteMaster.class);
        List routeMasterList = c.list();
        for (Iterator iterator = routeMasterList.iterator(); iterator
                .hasNext();) {
            RouteMaster routeMaster = (RouteMaster) iterator.next();
            System.out.println(routeMaster.getRouteId());
            c = session.createCriteria(RouteDetails.class);
            c.add(Restrictions.eq("id.routeId",   routeMaster.getRouteId()));
            Set<RouteDetails> routeDetailses = new HashSet<RouteDetails>();

            for (Iterator iterator1 = c.list().iterator(); iterator1
                    .hasNext();) {
                RouteDetails rd = (RouteDetails) iterator1.next();
                routeDetailses.add(rd);
            }
            routeMaster.setRouteDetailses(routeDetailses);
            routes.add(routeMaster);
        }

    } catch (HibernateException e) {
        transaction.rollback();
        e.printStackTrace();
    } finally {
        session.close();
    }
}

public List<RouteMaster> getRoutes() {
    return routes;
}

public void setRoutes(List<RouteMaster> routes) {
    this.routes = routes;
}

public RouteMaster getDelrb() {
    return delrb;
}

public void setDelrb(RouteMaster delrb) {
    this.delrb = delrb;
}

public List<RouteDetails> getSelectedRouteDetails() {
    return selectedRouteDetails;
}

public void setSelectedRouteDetails(List<RouteDetails> selectedRouteDetails) {
    this.selectedRouteDetails = selectedRouteDetails;
}

public void deleteEmployee(RouteMaster rm, RouteDetails rd) {
    System.out.println(rm.getRouteId());
    System.out.println(rd.getId().getEmployeeId());
}

public void display() {
    System.out.println("Inside display");

    if (selectedRouteDetails == null) {
        System.out.println("No selection");
    } else {
        for (Iterator iterator = selectedRouteDetails.iterator(); iterator
                .hasNext();) {
            RouteDetails rd1 = (RouteDetails) iterator.next();
            System.out.println(rd1.getId().getEmployeeId());
        }
    }
}
}


提交表单时,所选值将返回null。我想获取dataGrid中所有dataTable的选定值。请帮忙。

你能这样试试吗

List<RouteDetails> selectedRouteDetails = new ArrayList<RouteDetails>();


这有点令人困惑。我在你的Facelets页面上没有看到任何类型的输入元素,那么你希望提交什么呢?试过更新的版本吗?高达6.0的快照?试一下,不要在生产中使用
public RouteEditingBean() {
     selectedRouteDetails = new ArrayList<RouteDetails>();

.....
}