Как получить h: outputText внутри интерфейса ui: repeat, вложенного в h: dataTable для обновления при обновлении таблицы данных? - PullRequest
0 голосов
/ 20 июня 2019

Итак, соответствующие разделы моего кода:

<h:panelGroup id="pnlGrp" style="padding:10px" width="100%">
    <div>
        <h:dataTable id="availableCrList"
                       value="#{searchData.availableCrList}"
                       var="avail"
                       varStatus="thisVarStatus" rows="#{searchData.rowsPerPage}"
                       sortColumn="#{searchData.crSortColumnName}"
                       sortAscending="#{searchData.crAscending}" style="width:100%;">
            <h:column>
                <ui:repeat value="#{avail.crRsnCdList}"
                            var="crRsnCd"
                            varStatus="status">
                    <h:outputText value="#{crRsnCd}&lt;br /&gt;"
                                    title="#{avail.crRsnDescList[status.index]}"
                                    escape="false"/>
                </ui:repeat>
            </h:column>
        </h:dataTable>
    </div>
</h:panelGroup>

Я работаю в унаследованном приложении, и моя цель - показать список кодов, которые указывают причины, по которым данный элемент в этой таблице может быть завершен или отменен, и так далее. Заголовок преобразуется во всплывающую подсказку, которая отображает описание для каждого из этих кодов.

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

Прямо сейчас с приведенным выше кодом он отображает коды правильно с первого раза, но когда я обновляю данные путем поиска нового значения, все остальные столбцы (не показаны) отображаются правильно, в то время как столбец RsnCd продолжает отображать то же самое данные из первого поиска.

Например, в первый раз, когда я ищу записи, данные могут быть получены:

Row1:A1
Row2:A1
Row3:A1
     A3
Row4:A1

Во второй раз при поиске данных я ожидаю увидеть только:

Row1:
Row2:
Row3:
Row4:
Row5:
Row6:
Row7:

Но вместо этого я получаю:

Row1:A1
Row2:A1
Row3:A1
     A3
Row4:A1
Row5:
Row6:
Row7:

Действительно не уверен, что я объясняю это адекватно / понятно.

1 Ответ

0 голосов
/ 21 июня 2019

Я решил эту проблему, изменив

<ui:repeat value="#{avail.crRsnCdList}"
           var="crRsnCd"
           varStatus="status">
    <h:outputText value="#{crRsnCd}&lt;br /&gt;"
                  title="#{avail.crRsnDescList[status.index]}"
                  escape="false"/>
</ui:repeat>

Кому:

<ice:column>
    <ice:repeat value="#{avail.crRsnCdList}"
                varStatus="status">
        <ice:outputText value="#{avail.crRsnCdList[status.index]}&lt;br /&gt;"
                        title="#{avail.crRsnDescList[status.index]}"
                        escape="false"/>
    </ice:repeat>
</ice:column>

Я пытался избавиться от значения, но он перестал отображать что-либо.

...