<h:form> <p:dataTable var="team" value="#{dtSubTableView.teams}"> <f:facet name="header"> NBA Teams </f:facet> <p:columnGroup type="header"> <p:row> <p:column rowspan="2" headerText="Team" /> <p:column colspan="2" headerText="Stats" /> </p:row> <p:row> <p:column headerText="Wins" /> <p:column headerText="Losses" /> </p:row> </p:columnGroup> <p:subTable var="stats" value="#{team.stats}"> <f:facet name="header"> <h:outputText value="#{team.name}" /> </f:facet> <p:column> <h:outputText value="#{stats.season}" /> </p:column> <p:column> <h:outputText value="#{stats.win}" /> </p:column> <p:column> <h:outputText value="#{stats.loss}" /> </p:column> <p:columnGroup type="footer"> <p:row> <p:column footerText="Totals: " style="text-align:right"/> <p:column footerText="#{team.allWins}" /> <p:column footerText="#{team.allLosses}" /> </p:row> </p:columnGroup> </p:subTable> </p:dataTable> </h:form>
@Named("dtSubTableView") @RequestScoped public class SubTableView { private List<Team> teams; @PostConstruct public void init() { teams = new ArrayList<Team>(); Team lakers = new Team("Los Angeles Lakers"); lakers.getStats().add(new Stats("2005-2006", 50, 32)); lakers.getStats().add(new Stats("2006-2007", 44, 38)); lakers.getStats().add(new Stats("2007-2008", 40, 42)); lakers.getStats().add(new Stats("2008-2009", 45, 37)); lakers.getStats().add(new Stats("2009-2010", 48, 34)); lakers.getStats().add(new Stats("2010-2011", 42, 42)); teams.add(lakers); Team celtics = new Team("Boston Celtics"); celtics.getStats().add(new Stats("2005-2006", 46, 36)); celtics.getStats().add(new Stats("2006-2007", 50, 32)); celtics.getStats().add(new Stats("2007-2008", 41, 41)); celtics.getStats().add(new Stats("2008-2009", 45, 37)); celtics.getStats().add(new Stats("2009-2010", 38, 44)); celtics.getStats().add(new Stats("2010-2011", 35, 47)); teams.add(celtics); } public List<Team> getTeams() { return teams; } }
public class Stats implements Serializable { private String season; private int win; private int loss; public Stats() {} public Stats(String season, int win, int loss) { this.season = season; this.win = win; this.loss = loss; } public int getWin() { return win; } public void setWin(int win) { this.win = win; } public int getLoss() { return loss; } public void setLoss(int loss) { this.loss = loss; } public String getSeason() { return season; } public void setSeason(String season) { this.season = season; } }