有没有办法让 JSF Backing bean 导致页面上组件的更新?我不想使用具有更新属性的 ajax 组件来更新页面上的组件。我需要从 JSF 支持 bean 方法中触发更新。请注意,页面上的更新可能发生在该方法完成之后或完成之前。我正在使用 PrimeFaces,如果可以使用 PrimeFaces 获得解决方案的话。
原文由 BestPractices 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有办法让 JSF Backing bean 导致页面上组件的更新?我不想使用具有更新属性的 ajax 组件来更新页面上的组件。我需要从 JSF 支持 bean 方法中触发更新。请注意,页面上的更新可能发生在该方法完成之后或完成之前。我正在使用 PrimeFaces,如果可以使用 PrimeFaces 获得解决方案的话。
原文由 BestPractices 发布,翻译遵循 CC BY-SA 4.0 许可协议
我还尝试从 jsf 支持 bean/类更新组件
操作 UI 组件后,您需要执行以下操作:
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(componentToBeRerendered.getClientId())
使用 clientId 而不是(服务器端)componentId 很重要!
原文由 Frithjof Schaefer 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.3k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
使用标准 JSF API,将客户端 ID 添加到
PartialViewContext#getRenderIds()
。使用 PrimeFaces 特定 API,使用
PrimeFaces.Ajax#update()
。或者,如果您尚未使用 PrimeFaces 6.2+,请使用
RequestContext#update()
。如果您碰巧使用 JSF 实用程序库 OmniFaces ,请使用
Ajax#update()
。无论如何,请注意,这些客户端 ID 应该代表绝对客户端 ID,它们 没有 前缀
NamingContainer
分隔符,就像您从视图端所做的那样。