2008-12-11 2 views
0

Я недавно портировал приложение из JSF 1.1 в JSF 1.2. В процессе мы удалили tomahawk и решили использовать богатые вместо этого.Лучший способ сделать расширяемый/сбрасываемый subTable с rich: dataTable

Теперь мне нужно сделать способ расширения/складывания detailViev для каждой строки таблицы.

Единственное, что я могу думать о чем-то вдоль этих линий (взято из документации на docs.jboss.com):

<rich:dataTable value="#{capitalsBean.capitals}" var="capitals"> 
    <rich:column> 
     ... 
    </rich:column> 
    <rich:subTable value="#{capitals.details}" var="detail" ajaxKeys="#{bean.ajaxSet}" binding="#{bean.subtable}" id="subtable" rendered="detail.detailOpened"> 
     <rich:column> 
      ... 
     </rich:column> 
    </rich:subTable> 
</rich:dataTable> 

Я думаю, что-то подобное будет работать. Проблема в том, что я либо должен добавить getDetailOpened, либо setDetailOpened для объектов, которые я использую, или обернуть каждый объект в другой объект, который предоставляет эти два метода.

Кто-нибудь знает лучший способ или как это должно быть сделано?

ответ

1

Я часто добавлял методы моим бобам (или фасолям), которые содержат эти свойства как способ работы с JSF. Это некрасиво, но это работает.

Единственный другой вариант, о котором я могу сейчас думать, это использовать функцию JavaScript для переключения состояния представления деталей. Это не было бы идеальным по ряду причин, но это избавило бы вас от необходимости поддерживать серверную серверу.