Основная проблема заключается в том, что JSF (ядро) привязано к элементу HTML table
для рендеринга результата запроса через компонент dataTable
.Поскольку JSF dataTable
отображается как HTML table
, результат ограничен тем, что можно управлять в столбцах (нет встроенного элемента управления строк, который я видел).HTML / CSS способ сделать это довольно элегантный, но для достижения этого в JSF я считаю, что UIComponent
рендеринг для dataTable
должен быть переопределен, чтобы вывести это:
<div class="table">
<a href="#" class="row">
<span class="cell">Column-1-Value</span>
<span class="cell">Column-2-Value</span>
</a>
...
</div>
ССтили CSS table
row
и cell
, представляющие display:table
, display:table-row
и display:table-cell
;соответственно.Это делает строку полностью интерактивной, но ведет себя как правильная таблица.Я не стал переписывать рендеры JSF и решать проблемы JSF commandLink
и других компонентов, чтобы выполнить рендеринг, как описано выше, но это, вероятно, ответ ultimate .Я не являюсь поклонником JSF после борьбы с ним в нескольких проектах сейчас (по сравнению с облегченными комбинациями концепций из базового HTML / CSS, небольшим количеством JavaScript, чистыми Java / Servlets и т. Д.).