Проблема перерисовки с использованием аннотации @Formula внутри объекта при использовании в компоненте jsf / richfaces

У меня проблема с повторным рендерингом на 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 - это временное свойство от объекта Folder. Пока все хорошо, я могу правильно отобразить раскрывающийся список и сохранить выбранного рецензента в БД. Но у меня проблема с переопределением имени рецензента. В некоторых случаях он не обновляется после нажатия кнопки «Готово», но в некоторых случаях он работает хорошо.

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

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

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

Спасибо :)


person Ellie Fabrero    schedule 15.12.2011    source источник


Ответы (1)


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

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

Мое решение:

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

-ваше здоровье

person Ellie Fabrero    schedule 28.12.2011