Есть ли способ заставить bean-компонент JSF Backing вызывать обновление компонента на странице? Я не собираюсь использовать компонент ajax с атрибутом update для обновления компонента на странице. Мне нужно запустить обновление из метода компонента поддержки JSF. Обратите внимание, что обновление на странице может произойти после завершения этого метода или до его завершения. Я использую PrimeFaces, если есть решение, которое можно получить с помощью PrimeFaces.
jsf-2
primefaces
Лучшие практики
источник
источник
Ответы:
Используя стандартный JSF API, добавьте идентификатор клиента в
PartialViewContext#getRenderIds()
.Используя специальный API PrimeFaces, используйте
PrimeFaces.Ajax#update()
.Или, если вы еще не пользуетесь PrimeFaces 6.2+, используйте
RequestContext#update()
.Если вы используете служебную библиотеку JSF OmniFaces , используйте
Ajax#update()
.Независимо от способа, обратите внимание, что эти идентификаторы клиентов должны представлять собой абсолютные идентификаторы клиентов, которые не имеют префикса с
NamingContainer
символом разделителя, как это было бы со стороны просмотра.источник
<f:ajax listener>
or<f:event type="preRenderView" listener>
<f:ajax>
. Это введено с JSF 2.0. Вам придется прибегнуть к средствам, специфичным для библиотеки компонентов JSF 1.2.Я также пытался обновить компонент из бина / класса поддержки jsf
После манипулирования компонентом пользовательского интерфейса вам необходимо сделать следующее:
Важно использовать clientId вместо (серверного) componentId !!
источник
RequestContext
Является устаревшим из Primefaces 6.2 . Из этой версии используйте следующее:А для выполнения javascript из backbean используйте такой способ:
Ссылка:
источник
Все возможно, только если будет достаточно времени на исследования :)
То, что мне нужно делать, - это как иметь людей, которых я перебираю в пользовательский интерфейс: повторять и отображать имена и другие поля во входных данных. Но одно из полей было singleSelect - A, и в зависимости от его значения обновлялось другое input - B. даже ui: repeat, у меня нет идентификатора, который я ввел, и он появился в дереве DOM
Тогда идентификаторы в html были примерно такими:
Тогда в представлении у меня есть один метод, например:
И его реализация была в bean-компоненте, например:
Таким образом, я обновил элемент из bean-компонента без проблем. PF версии 6.2
Удачи и удачного кодирования :)
источник
personType
, то передача человека и индекса в прослушиватель ajax излишняя. Вы можете получить как идентификатор, так и значение из события. Но ваше решение может быть необходимым для вашего конкретного случая использования, но, поскольку нет полного примера (в минимально воспроизводимом вкусе примера ), трудно сказать.