<a:form>
<a:dataTable var="team" value="#{dtSubTableView.teams}">
<f:facet name="header">
NBA Teams
</f:facet>
<a:columnGroup type="header">
<a:row>
<a:column rowspan="2" headerText="Team" />
<a:column colspan="2" headerText="Stats" />
</a:row>
<a:row>
<a:column headerText="Wins" />
<a:column headerText="Losses" />
</a:row>
</a:columnGroup>
<a:subTable var="stats" value="#{team.stats}">
<f:facet name="header">
<h:outputText value="#{team.name}" />
</f:facet>
<a:column>
<h:outputText value="#{stats.season}" />
</a:column>
<a:column>
<h:outputText value="#{stats.win}" />
</a:column>
<a:column>
<h:outputText value="#{stats.loss}" />
</a:column>
<a:columnGroup type="footer">
<a:row>
<a:column footerText="Totals: " style="text-align:right"/>
<a:column footerText="#{team.allWins}" />
<a:column footerText="#{team.allLosses}" />
</a:row>
</a:columnGroup>
</a:subTable>
</a:dataTable>
</a:form>
package com.jarch.showcase.view.data.datatable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import org.primefaces.showcase.domain.Stats;
import org.primefaces.showcase.domain.Team;
@ManagedBean(name="dtSubTableView")
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;
}
}
package com.jarch.showcase.domain;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
public class Team implements Serializable {
private String name;
private List<Stats> stats;
public Team() {
stats = new ArrayList<Stats>();
}
public Team(String name) {
this.name = name;
stats = new ArrayList<Stats>();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Stats> getStats() {
return stats;
}
public void setStats(List<Stats> stats) {
this.stats = stats;
}
public int getAllWins() {
int sum = 0;
for(Stats s : stats) {
sum += s.getWin();
}
return sum;
}
public int getAllLosses() {
int sum = 0;
for(Stats s : stats) {
sum += s.getLoss();
}
return sum;
}
}
package com.jarch.showcase.domain;
import java.io.Serializable;
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;
}
}