2013-04-11 4 views
1

У меня есть портлет Liferay, с которым я выполняю некоторые действия через AJAX. Когда я обрабатываю эти действия в serverResource, я хочу заставить всех клиентов визуализировать. Я пробовал несколько вещей, но они работают только на одного клиента. То, что я подразумеваю под клиентом, - это пользователь на моем сайте, выполняющий действие (т. Е. Нажатие кнопки, чтобы изменить статус объекта в контейнере поиска).Liferay Event to Force Render

Я попытался использовать IPC на стороне клиента, активировав событие, когда объект обновлен. Я запускаю событие, когда мой вызов AJAX был успешным, но событие не попадает в мой другой клиент (второй браузер, который я открывал на той же странице), поэтому он не обновляется, если я не обновляю страницу, которую я НЕ хотеть сделать.

Я смотрел на настройку портлета отправителя/получателя (мой портлет - отправитель и получатель), но похоже, что мне необходимо отправить действия, которые заставили бы мою страницу обновляться, поэтому не могут ее использовать. Я вызывал include от processAction, думая, что он вызовет рендер для всех клиентов, но только работал на клиенте, который делает запрос ajax.

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

ответ

1

JSR 286 стандартизирует серверный IPC, нет динамического обновления Ajax отдельных портлетов на экране. Вам нужно будет сделать ваши собственные портлеты осведомленными о событиях, которые вы инициируете через JS, и не можете полагаться на что-либо (стандартизованное) из коробки из портального контейнера.

AFAIK serveResource не могут вызвать события (но я не перепроверить с спецификацией), если это произошло, это событие, безусловно, не вызовет каких-либо сделать с помощью Ajax без пользовательского кода на вашем конце