Primefaces:动态更改<p:ajax element?

问题描述 投票:0回答:1

JSF、Java Server Faces、Primefaces。

我正在努力寻找如何更改 的更新属性的解决方案

场景:带有 的对话

    <p:dialog modal="true">
       <p:ajax event="close" update="COMPONENT IDs" 
                listener="#{bean.onClose()}" />

我想在打开对话框时更改更新属性。 我试过了

  1. 使用 EL 表达式值从 bean 获取变化的属性值。 这不起作用,因为属性值是在第一次渲染时设置的,并且再也不会设置

  2. 在bean的监听器方法中添加更新组件ID:

    PrimeFaces.current().ajax().update("component IDs");
    

这有效。 但:不适用于 PrimeFaces 选择器 (PFS)。我需要那个。

就像更新=“@(.mystyle)”
(我猜是因为在这种情况下,组件是由 jquery 在客户端选择的。)

有什么想法吗? 谢谢 彼得

jsf primefaces
1个回答
0
投票

彼得,

有一个允许动态

update=""
的开放票证,这也是一个开放的面孔规范问题。请参阅 Faces 规范问题:https://github.com/jakartaee/faces/issues/1499

但是您考虑过 PrimeFaces 中的观察者模式吗? https://www.primefaces.org/showcase/ui/ajax/observer.xhtml

基本上,您的对话框应该只是“触发事件”,并且您的组件应该订阅该事件。 如果任何组件不是

rendered=""
,它们显然不会关心该事件。 所以对话框的工作只是触发一个
closeDialog
事件,并且页面上呈现的任何关心该事件的组件都应该订阅?

© www.soinside.com 2019 - 2024. All rights reserved.