我可以从JSF支持bean方法更新JSF组件吗?
有没有办法使JSF Backing bean导致页面上组件的更新? 我不希望使用更新属性的ajax组件更新页面上的组件。 我需要从JSF支持bean方法中触发更新。 请注意,在此方法完成之后或完成之前,页面上的更新可能会发生。 我正在使用PrimeFaces,如果有使用PrimeFaces的解决scheme。
使用标准的JSF API,将客户端ID添加到PartialViewContext#getRenderIds()
。
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("foo:bar");
使用PrimeFaces特定的API,使用RequestContext#update()
。
RequestContext.getCurrentInstance().update("foo:bar");
如果碰巧使用JSF实用程序库OmniFaces ,请使用Ajax#update()
。
Ajax.update("foo:bar");
无论如何,请注意,这些客户端ID应该表示绝对客户端ID, 而不是以NamingContainer
分隔符字符作为前缀,就像从视图一样。
我也尝试从jsf backing bean / class更新组件
操作UI组件后,您需要执行以下操作:
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(componentToBeRerendered.getClientId())
使用clientId而不是(服务器端)componentId是很重要的!