この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には全角スペースぶちこんどいた。
これが一番目立たない?