Я создал несколько потоков в веб-приложении
blockquote>Я искренне надеюсь, что вы сделали правильный путь и таким образом, это не заканчивается эпической катастрофой.
Я хотел бы обновить таблицу автоматически, чтобы показать текущее состояние потока. Есть ли какой-либо компонент предварительной сборки, который я могу использовать в этом сценарии?
blockquote>Вы в основном ищете технику под названием «опрос» или «нажатие». Основная концепция опроса заключается в использовании JavaScript
setInterval()
илиsetTimeout()
для запуска HTTP-запроса (ajax) на сервер через интервалы времени и позволяет обрабатывать результаты соответствующим образом. Основная концепция pushing - открыть постоянное HTTP-соединение и передать серверу небольшие сообщения по нему, это можно сделать среди другихWebSocket
в JavaScript и JSR356 API в Java EE 7 .Стандартная реализация JSF не предлагает готового к использованию опроса или push-компонента из коробки. Для предстоящего JSF 2.3 в настоящее время выполняется новый тэг
(см. Также issue 1396 ).
Лучше всего будет скрытая форма со скрытой ссылкой на команду / с помощью
, а затем вызовите его с помощью
setInterval()
. Однако библиотеки компонентов, такие как PrimeFaces , предлагают готовые к использованию компоненты, см. Такжевитрины и
витрины для некоторых конкретные примеры. Библиотека утилиты JSF OmniFaces имеет в своем
витрине пример опроса и в
витрине несколько примеров нажатия (новый стандарт JSF
будет в значительной степени базироваться на
).
См. также:
Нет разницы для define_method
. Но есть разница, когда вы используете def
.
o = Object.new
# class_eval example
class << o; self; end.class_eval { def test1; :test1; end }
o.test1 #=> test1
# instance_eval example
class << o; self; end.instance_eval { def test2; :test2; end }
o.test2 #=> NoMethodError
Почему разница в поведении между def
и define_method
? define_method
является вызовом метода и поэтому работает с self
в контексте eval. self
в instance_eval
и class_eval
одинаковы - это приемник (собственный класс o).
Однако def
ведет себя по-разному, он работает не на self
, а на default define
. В случае class_eval
default definee
совпадает с self
, но для instance_eval
это вместо метакласса self
.
Как получить доступ к методу test2
, определенному выше? test2 должен быть методом экземпляра, определенным в метаклассе собственного класса o.
Это метод класса на собственном классе o:
class << o; test2; end #=> :test2