この1つ前の投稿は簡単すぎたので、もうちょいひねってみる。
最終的にこんな画面を目指す。

まずは、適当にデータプロバイダを作ってバインドした表を作る。
TableにTableRowGroupをドラッグアンドドロップで追加する。
んで、こんなBeanをDataProviderを作る。
// Bean
public class EmpAccum {
private String title;
private String value;
/** Creates a new instance of EmpAccum */
public EmpAccum() {
}
public void setTitle(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setValue(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}// DataProvider
public class EmpAccumDataProvider extends ObjectListDataProvider {
/** Creates a new instance of EmpAccumDataProvider */
public EmpAccumDataProvider() {
setObjectType(EmpAccum.class);
}
}これをSessionBean1にプロパティでもたせてTableRowGroup2にバインドしておく。
TableLayoutはこんな感じ

そして、ボタンクリックのアクションの中身はこんな具合。
合計と平均を作ってDataProviderに設定してる。
public String button1_action() {
List emps = getSessionBean1().getEmployeesDataProvider().getList();
int sum = 0;
for (Iterator it = emps.iterator(); it.hasNext();) {
Employees emp = (Employees) it.next();
sum += emp.getSalary().intValue();
}
EmpAccum sumData = new EmpAccum();
EmpAccum avgData = new EmpAccum();
sumData.setTitle("合計:");
sumData.setValue(Integer.toString(sum));
avgData.setTitle("平均:");
avgData.setValue(Integer.toString(sum / emps.size()));
List accums = new ArrayList();
accums.add(sumData);
accums.add(avgData);
getSessionBean1().getEmpAccumDataProvider().setList(accums);
return null;
}まだタイトルが残る。
TableRowGroup2のカラムのTitleを空文字にすれば完成。
TableRowGroup2のemptyDataMsgには全角スペースぶちこんどいた。
これが一番目立たない?
