2014-11-18 3 views
1

У меня проблема с производительностью с помощью метода RemoteCommand caling bean method time lag.

Использование primefaces 4.0, наша страница XHTML, во время выполнения нагрузок значительное количество дивы в панельОсновные интерфейсы RemoteCommand временная задержка при вызове bean-компонента

<p:outputPanel id="runtime_panel" autoUpdate="true" /> 

Некоторые элементы управления SelectOneRadio есть метод слушателей через setOnchange(). Они называют RemoteCommand, который определен в верстку страницы во время разработки:

<p:remoteCommand name="ourRemoteCommand" 
actionListener="#{bean.someMethod}" update="runtime_panel" 
/> 

Цель bean.someMethod, чтобы показать или скрыть определенные элементы управления с графическим интерфейсом на нашей странице через AJAX. Bean - это запрос области.

Проблема заключается в прохождении определенного времени лагом при звонке bean.someMethod от клиента. В моих тестах ответы на javascript неожиданно, но есть достаточно длинное отставание passeed, когда я поймаю bean.someMethod через точку останова на стороне сервера - около 2,5 секунд.

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

Если есть только небольшое количество элементов в «runtime_panel», я не заметил каких-либо задержки, и точка останова немедленно останавливается в «bean.someMethod». Между количеством элементов управления и временем отклика имеется корреляция.

Я также создаю еще один тестовый пусковой набор RemoteCommand в начале страницы в собственной форме.

<form> 
<p:remoteCommand name="rcgg" partialSubmit="true" process="@this" update="@none" actionListener="#{bean.testMethod()}" /> 
<h:outputText id="msgs" value="Ajax Submit" /> 
<p:commandButton type="button" onclick="console.log('client start');rcgg('ddd');console.log('client end')" value="Ajax1" icon="ui-icon-refresh" /> 
</form> 

Таким образом, код сервера также выполняется немедленно. Но когда «outputPanel» имеет много элементов gui, есть также временная задержка , когда серверная часть начинает выполняться, даже нет никакого отношения к этому RemoteCommand «rcgg». Странный.

Я также протестирована с несколькими RemoteCommand arributes (

immediate="false" async="true" partialSubmit="true" ignoreAutoUpdate="true" process="@none" global="false" 
update="@none" 

), но без успеха тоже.

У меня нет идеи, как избавиться от этого «запаха вызова боба».
Мне очень нужна ваша помощь.

ответ

1

Обычно вы должны использовать [email protected] на p:remoteCommand, иначе он отправит все h:form и его компоненты.
Так что лучше держать p:remoteCommand в отдельном h:form.

Если это также не сработает, вы всегда можете использовать метод update на ManagedBean для обновления компонента.

RequestContext.getCurrentInstance().update("COMPONENT_ID_TO_UPDATE") 
Смежные вопросы