p: selectmanycheckbox в выборках переопределений p: datatable - PullRequest
0 голосов
/ 27 сентября 2019

На первом рисунке показан выбор двух флажков в таблице данных.Было показано два ряда данных.На первом флажке строки вы можете увидеть скобки списка выбора.Единственным действием был выбор флажков.Ничего больше.

enter image description here

Теперь, когда я перезагружаю страницу или нажимаю на кнопку на дне, состояние меняется, как на втором рисунке.

enter image description here Только флажки выбора последней строки находятся в списке выбора.Поэтому я подумываю, если это проблема со списком выбора и его управляемым компонентом.

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

<p:datatable>...
<p:rowExpansion>#{pathSearch.selectedSignalList1}
                    <p:selectManyCheckbox id="signalSel" value="#{pathSearch.selectedSignalList1}">
                        <p:ajax listener="#{pathSearch.changeSignalListener1}" />
                        <f:selectItems value="#{pathDistSel.availableSignalList}"
                            var="sig" itemValue="#{sig.label}___#{sig.idS}" itemLabel="#{sig.label}" />
                    </p:selectManyCheckbox>
                </p:rowExpansion>

Фрагмент боба

@ManagedBean
@SessionScoped
public class PathSearch implements Serializable {
private List<Signal> selectedSignalList1;
getter, setter...
}

Я был бы счастлив, если у кого-то есть идея, где моя ошибка в мышлении.Возможно, у вас есть пример чего-то подобного.

1 Ответ

2 голосов
/ 27 сентября 2019

Используя

<p:selectManyCheckbox id="signalSel" value="#{pathSearch.selectedSignalList1}">
     <p:ajax listener="#{pathSearch.changeSignalListener1}" />
     <f:selectItems value="#{pathDistSel.availableSignalList}"
         var="sig" itemValue="#{sig.label}___#{sig.idS}" itemLabel="#{sig.label}" />
</p:selectManyCheckbox>

В раскрытии строки список выбора в каждой строке указывает на то же свойство , selectedSignalList1.Вам нужно использовать список / массив с индексом строки в качестве ключа или хэш-картой и бизнес-ключом.Так что-то вроде

<p:datatable ... rowIndex="signalIndex">
    <p:selectManyCheckbox id="signalSel" value="#{pathSearch.selectedSignalList[signalIndex]}">
         <p:ajax listener="#{pathSearch.changeSignalListener}" />
         <f:selectItems value="#{pathDistSel.availableSignalList}"
             var="sig" itemValue="#{sig.label}___#{sig.idS}" itemLabel="#{sig.label}" />
    </p:selectManyCheckbox>
</datatable>

И в бобе

@ManagedBean
@SessionScoped
public class PathSearch implements Serializable {
    private ArrayList<List<Signal>> selectedSignalList = new ArrayList<>();
    getter, setter...
}

Таким образом, каждый p:selectManyCheckbox в p:rowexpansion имеет свой собственный список, поддерживающий локальный выбор

То, что вы делаете при отправке и как объединять или восстанавливать, когда вам нужно загрузить отправленные данные, например, из базы данных и показать их на экране, зависит от вас.

...