JSF、Java Server Faces、Primefaces。
我正在努力寻找如何更改
场景:带有
<p:dialog modal="true">
<p:ajax event="close" update="COMPONENT IDs"
listener="#{bean.onClose()}" />
我想在打开对话框时更改更新属性。 我试过了
使用 EL 表达式值从 bean 获取变化的属性值。 这不起作用,因为属性值是在第一次渲染时设置的,并且再也不会设置
在bean的监听器方法中添加更新组件ID:
PrimeFaces.current().ajax().update("component IDs");
这有效。 但:不适用于 PrimeFaces 选择器 (PFS)。我需要那个。
就像更新=“@(.mystyle)”
(我猜是因为在这种情况下,组件是由 jquery 在客户端选择的。)
有什么想法吗? 谢谢 彼得
彼得,
有一个允许动态
update=""
的开放票证,这也是一个开放的面孔规范问题。请参阅 Faces 规范问题:https://github.com/jakartaee/faces/issues/1499
但是您考虑过 PrimeFaces 中的观察者模式吗? https://www.primefaces.org/showcase/ui/ajax/observer.xhtml
基本上,您的对话框应该只是“触发事件”,并且您的组件应该订阅该事件。 如果任何组件不是
rendered=""
,它们显然不会关心该事件。 所以对话框的工作只是触发一个 closeDialog
事件,并且页面上呈现的任何关心该事件的组件都应该订阅?