ADF Tableの末尾に新規行を追加するには

ADFのデータコントロールで、新規行を追加するOperationBindingは、CreateInsertにしろCreateWithParamにしろ、「カーソル位置への挿入」なので、データの末尾に追加するというのが素直に行えません。しょぼい。

OTNのディスカッションでも時々話題になるようで、いくつか方法も提案されてます。翻訳しようと思ったんですが、まあソースコード見ればなんとなくわかるので、リンクだけ。

Unwinding ADF: How to add a new row at the end of the ADF Table

Luc Bors Weblog: ADF 11g : How to control where a new row is inserted

画面やデータモデルの仕様にもよりますが、選択状態にかかわらず行追加は必ず最後に、ということであれば、ViewObject#insertRowメソッドをオーバライドしてしまう前者の方法がシンプルでいいかも知れません。

連番カラムを設けて、行挿入後にADF TableにSortEventを放り込むというのも試してみましたが、これだと新規行が表示されませんでした。ViewObjectへの行追加がTableに反映される前にSortEventが処理されてしまい、その後のPartial Refreshが行われないせいかなーと推測。

それにしても、できるだけJavaSQLを書かずに済むように、というポリシーはいいと思うんだけど、結局この程度でコード書かなきゃいけないっていう中途半端さがイケてないなあ。