2015-04-03 4 views
0

Я использую primefaces Для отображения сетки данных о DataTables следующим -Выбор строки для DataTable внутри DataGrid не работает в Primefaces

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> 

Подложка боб:

@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()); 
     } 
    } 
} 

}

Когда форма передана, то выбранные значения возвращают нуль. Я хочу получить выбранные значения для всех dataTable в dataGrid. Пожалуйста помоги.

+0

Это немного сбивает с толку. Я не вижу никаких элементов 'input' любого типа на вашей странице Facelets, так что вы ожидаете от FORM? – DavidS

+0

Пробовал более новую версию? Upto 6.0-SNAPSHOT? (попробуйте, не используйте в производстве) – Kukeltje

ответ

0

вы можете попробовать это так

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

или

public RouteEditingBean() { 
    selectedRouteDetails = new ArrayList<RouteDetails>(); 

..... 
} 
Смежные вопросы