私のWebアプリケーションはを使用して<ace:dataTable>
おり、デフォルトのフィルターを列に追加したいと思います。datatableは遅延読み込みを使用します。管理対象Beanのフィルターを「load」メソッドに追加できることを知っています。
ただし、管理対象Beanにフィルターを実装するのではなく、ページのレンダリングの開始時にビューのフィルター「テキストボックス」にフィルターを設定する必要があります。
どうすればこれを達成できますか?
私のWebアプリケーションはを使用して<ace:dataTable>
おり、デフォルトのフィルターを列に追加したいと思います。datatableは遅延読み込みを使用します。管理対象Beanのフィルターを「load」メソッドに追加できることを知っています。
ただし、管理対象Beanにフィルターを実装するのではなく、ページのレンダリングの開始時にビューのフィルター「テキストボックス」にフィルターを設定する必要があります。
どうすればこれを達成できますか?
私があなたの問題を理解するならば。このようなデータテーブルを取得した場合:
<ace:dataTable id="carTable"
value="#{dataTableBean.carsData}"
var="car"
paginator="true"
paginatorPosition="bottom"
rows="10">
<ace:column id="id" headerText="ID" sortBy="#{car.id}"
filterBy="#{car.id}" filterMatchMode="contains">
<h:outputText id="idCell" value="#{car.id}"/>
</ace:column>
</ace:dataTable>
次のようなHTMLコードを取得しました。
<div class="ui-datatable ui-widget" id="form:carTable">
<div>
<table>
<thead>
<tr>
<th class="ui-widget-header">
<div class="ui-header-column ui-sortable-column clickable" id="form:carTable:id">
<span>
<span class="ui-header-text" id="form:carTable:id_text">ID</span>
</span>
<span class="ui-header-right">
<span class="ui-sortable-control">
<span class="ui-sortable-column-icon">
<a class="ui-icon ui-icon-triangle-1-n" tabindex="0"
style="opacity: 0.33; "></a>
<a class="ui-icon ui-icon-triangle-1-s" tabindex="0"
style="opacity: 0.33; "></a>
</span>
<span class="ui-sortable-column-order"></span>
</span>
</span>
<input class="ui-column-filter" id="form:carTable:id_filter" name="form:carTable:id_filter"
size="1" tabindex="0" value=""/>
</div>
</th>
</tr>
</thead>
<tbody class="ui-datatable-data ui-widget-content">
<tr class=" ui-datatable-even " id="form:carTable_row_0" tabindex="0">
<td>
<span id="form:carTable:0:idCell">1</span>
</td>
</tr>
<tr class=" ui-datatable-odd " id="form:carTable_row_1" tabindex="0">
<td>
<span id="form:carTable:1:idCell">2</span>
</td>
</tr>
</tbody>
</table>
</div>
そこに入力が表示されます。次に、jQueryを使用します。
$(document).ready(function() {
$('[id$=id_filter]').html("default_text_for_filtering");});