проблема повторного рендеринга с использованием аннотации @Formula внутри сущности при использовании в компоненте jsf / richfaces - PullRequest
0 голосов
/ 15 декабря 2011

У меня возникли проблемы с повторным рендерингом на rich: scrollableDataTable, у меня есть функция onrowclick, которая отправляет элемент из моего списка в режим редактирования.

Вот пример кода:

                <a4j:outputPanel id="reviewerOP" ajaxRendered="true">           
                    <h:outputText id="to" value="#{_folder.reviewerName}">
                    </h:outputText>
                </a4j:outputPanel>          
                <h:selectOneMenu id="sridSO" value="#{folderBean.selectedReviewerId}" style="display: #{_folder.editmode == true ? 'block':'none'}">
                    <s:selectItems id="selectItes" value="#{folderBean.reviewersList}" var="_reviewer" label="#{_reviewer.userName}" itemValue="#{_reviewer.userId}"
                                   noSelectionLabel="--Select a Reviewer--"/>
                </h:selectOneMenu>
        </h:column>

Значение моей таблицы указывает на список сущностей с помощью @ SessionScope.

Сценарий заключается в том, что когда пользователь нажимает кнопку редактирования, элемент в этой конкретной строке будет находиться в режиме редактирования, и выпадающее меню будет включено, и пользователь сможет выбрать рецензента для этой папки. Свойство editmode является временным свойством от The Folder Entity. Пока все хорошо, я могу правильно отобразить выпадающий список и сохранить выбранного рецензента в БД. Но у меня возникли проблемы с этим, чтобы изменить имя рецензента. В некоторых случаях он не повторяется после нажатия кнопки «Готово», но в некоторых случаях он работает хорошо.

Свойство reviewName использовало @Formula для получения имени из другой таблицы.

Мой вопрос таков: имел ли @Formula какое-то отношение к задержке повторного рендеринга или области действия entityList, которая вызывает проблему.

Я использую seam.2.2 richfaces 3.x. и jsf2.0

Спасибо :)

1 Ответ

0 голосов
/ 28 декабря 2011

Уже решил проблему.

Я пытаюсь запустить какой-либо тест в списке результатов, который возвращается из моего списка объектов с использованием некоторых журналов. Я обнаружил, что свойства моей сущности обновляются как в БД, так и в списке. Но свойство, которое использует формулу, не обновляется. Поэтому метод refresh () не будет работать и не будет перечитывать свойство, аннотированное с использованием @Formula. Поэтому я думаю, что запрос на моем @Formula кэшируется hibernate и не будет перечитывать при втором доступе к списку результатов Entity List.

Мое решение:

Решением, которое я использую, является очистка EntityManager с помощью метода clear(). И список обновляется правильно, и рендеринг работает отлично.

-cheers

...