AccordionPanel, содержащий таблицы данных с selectionMode = "множественный" - PullRequest
0 голосов
/ 16 декабря 2011

XHTML-файл:

    <p:tab title="firstTab" id="FT">

        <p:dataTable var="..." value="#{...}" id="firstTable" selectionMode="multiple"
        selection="#{myController.selectedRows}">
            <p:column>...</p:column>
            <p:column>...</p:column>
            <p:commandButton value="View" action="#myController.viewSelected}"/>
        </p:dataTable>
    </p:tab>

    <p:tab title="secondTab" id="ST">

        <p:dataTable var="..." value="#{...}" id="secondTable" selectionMode="multiple"
        selection="#{myController.selectedRows}">
            <p:column>...</p:column>
            <p:column>...</p:column>
            <p:commandButton value="View" action="#myController.viewSelected}"/>
        </p:dataTable>
    </p:tab>

Управляемый компонент:

@ManagedBean
@RequestScoped
public class MyController{
    MyObject[] selectedRows;
        //get+set

    public void viewSelected(){
        System.out.println(selectedRows.length)
    }
}

Выход консоли отличается.Иногда выводом является 0 , но обычно содержимое selectedRows портится.Результат смешивается, если у меня есть выборки в dataTable-s и я нажимаю одну из двух commandButton-s.Я предполагаю, что это происходит, потому что нет определенного идентификатора для кнопок или, возможно, я должен использовать различные бизнес-атрибуты для каждой таблицы данных.Как правильно решить эту проблему?

Спасибо!

1 Ответ

1 голос
/ 17 декабря 2011

Какую версию PF вы используете?

Также, если этот commandButton не находится внутри столбца или чего-то еще, что с ним?Если вы хотите быть нижним колонтитулом dataTable, вы должны сделать это следующим образом:

<f:facet name="footer"> 
   <p:commandButton value="View" action="#myController.viewSelected}"/>
</facet> 

Способ назначения выбранных строк из обеих таблиц dataTable в один и тот же массив, я бы сказал, что это не очень хорошопрактика, на самом деле я никогда не видел что-то подобное!Какой смысл?Даже если вы хотите иметь две таблицы данных с одинаковыми записями, вы должны по крайней мере назначить different array/list для выбранных записей в каждой таблице и поместить их в different forms, если вы не хотите запускать оба события при нажатии только commandButton....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...