Jsf 使用rich:dataTable制作可扩展/可折叠子表的最佳方法

Jsf 使用rich:dataTable制作可扩展/可折叠子表的最佳方法,jsf,jakarta-ee,richdatatable,Jsf,Jakarta Ee,Richdatatable,我最近将一个应用程序从JSF1.1移植到JSF1.2。在这个过程中,我们删除了战斧,并决定使用富 现在我需要一种方法来为表中的每一行生成一个可展开/可折叠的detailViev 我能想到的唯一一件事就是这样(改编自docs.jboss.com上的文档): ... ... 我想那样做会管用的。问题是,我要么必须将getDetailOpened和setDetailOpened添加到我使用的对象中,要么将每个对象包装到提供这两种方法的另一个对象中 有人知道更好的方法,或者应该如何做吗?我经常在我的

我最近将一个应用程序从JSF1.1移植到JSF1.2。在这个过程中,我们删除了战斧,并决定使用富

现在我需要一种方法来为表中的每一行生成一个可展开/可折叠的detailViev

我能想到的唯一一件事就是这样(改编自docs.jboss.com上的文档):


...
...
我想那样做会管用的。问题是,我要么必须将getDetailOpened和setDetailOpened添加到我使用的对象中,要么将每个对象包装到提供这两种方法的另一个对象中


有人知道更好的方法,或者应该如何做吗?

我经常在我的bean(或包装器bean)中添加包含这些属性的方法,作为处理JSF的一种方式。虽然不漂亮,但很管用

目前我唯一能想到的另一个选择是使用JavaScript函数切换details视图的状态。出于许多原因,这可能并不理想,但它将使您不必在服务器端保持状态

<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>