首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dataGrid中dataTable的行选择在Primefaces中不起作用

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

Stack Overflow用户
提问于 2015-04-04 00:49:12
回答 1查看 793关注 0票数 0

我使用primefaces来显示数据表的数据网格,如下所示-

Facelets页面:

代码语言:javascript
复制
<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>

Backing-bean:

代码语言:javascript
复制
@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的选定值。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2015-04-04 02:52:53

你可以试一下这样吗?

代码语言:javascript
复制
List<RouteDetails> selectedRouteDetails = new ArrayList<RouteDetails>();

代码语言:javascript
复制
public RouteEditingBean() {
     selectedRouteDetails = new ArrayList<RouteDetails>();

.....
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29436325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档