並べ替え可能な DataTable をターゲットとするウィケット テストがいくつかあります。具体的には、並べ替え可能な列ヘッダーを ajax クリックし、レンダリングされた本文行の内容をアサートします。テーブル コンポーネントの子孫のコンポーネント階層が wicket フレームワークによって自動生成され、次のような並べ替えリンク (ajax) へのパスが生成されます。
table:topToolbars:toolbars:0:headers:1:header:orderByLink
ただし、DataTable がテスト全体で再レンダリングされると、ツールバー コンポーネントのインデックスが毎回インクリメントされます。つまり、次のようになります。
table:topToolbars:toolbars:1:headers:1:header:orderByLink
その後、一致しなくなるため、後続のテストのハードコードされたパスが壊れます。
データテーブル構築のコード フラグメントは次のとおりです。
final PayeesProvider dataProvider = new PayeesProvider();
table = new DataTable<ResponsePayeeDetails>("payees", columns, dataProvider, rowsPerPage);
table.setOutputMarkupId(true);
table.addTopToolbar(new AjaxFallbackHeadersToolbar(table, dataProvider) {
private static final long serialVersionUID = -3509487788284410429L;
@Override
protected WebMarkupContainer newSortableHeader(final String borderId, final String property, final ISortStateLocator locator) {
return new AjaxFallbackOrderByBorder(borderId, property, locator, getAjaxCallDecorator()) {
@Override
protected void onRender() {
System.out.printf("Path: %s\n", this.getPageRelativePath());
super.onRender();
}
private static final long serialVersionUID = -6399737639959498915L;
@Override
protected void onAjaxClick(final AjaxRequestTarget target) {
target.add(getTable(), navigator, navigatorInfoContainer);
}
@Override
protected void onSortChanged() {
super.onSortChanged();
getTable().setCurrentPage(0);
}
};
}
});
table.addBottomToolbar(new NoRecordsToolbar(table));
add(table);
正確には、テストを実行すると、上記の System.out.printf ステートメントが出力されます。
(1次試験)
Path: payees:topToolbars:toolbars:0:headers:1:header
Path: payees:topToolbars:toolbars:0:headers:2:header
(2次試験)
Path: payees:topToolbars:toolbars:2:headers:1:header
Path: payees:topToolbars:toolbars:2:headers:2:header
(3次試験)
Path: payees:topToolbars:toolbars:4:headers:1:header
Path: payees:topToolbars:toolbars:4:headers:2:header
(4回目のテスト)
Path: payees:topToolbars:toolbars:6:headers:1:header
Path: payees:topToolbars:toolbars:6:headers:2:header
Path: payees:topToolbars:toolbars:6:headers:1:header
Path: payees:topToolbars:toolbars:6:headers:2:header
Path: payees:topToolbars:toolbars:6:headers:1:header
Path: payees:topToolbars:toolbars:6:headers:2:header
(5回目のテスト)
Path: payees:topToolbars:toolbars:8:headers:1:header
Path: payees:topToolbars:toolbars:8:headers:2:header
インデックス生成をより決定論的/反復可能にする方法を知っている人はいますか? または、これらの増分の影響を受けないように、パスをワイルドカード化または一般化する方法はありますか?
どんな助けでも大歓迎です!