我正在尝试使用RequestContext.update()来更新表,下面的代码正在运行(jsf):
<h:panelGrid columns="2" style="width: 100%" columnClasses="treeColumn,tableColumn">
<h:panelGroup id="treePanel">
<p:tree id="tree"
value="#{bean.root}"
var="node"
dynamic="true"
cache="true"
animate="true"
selectionMode="single"
selection="#{bean.selectedNode}"
rendered="#{bean.renderTree}">
<p:ajax event="select" listener="#{bean.onNodeSelect}" update=":mainForm:treePanel,:mainForm:tablePanel"/>
<p:ajax event="collapse" listener="#{bean.onNodeCollapse}"/>
<p:treeNode expandedIcon="ui-icon-folder-open"
collapsedIcon="ui-icon-folder-collapsed">
<h:outputText value="#{node.name}" styleClass="tableTreeText"/>
</p:treeNode>
<p:treeNode expandedIcon="ui-icon-folder-open"
collapsedIcon="ui-icon-folder-collapsed">
<h:outputText value="#{node.name}" styleClass="tableTreeText"/>
</p:treeNode>
</p:tree>
</h:panelGroup>
<h:panelGroup id="tablePanel" styleClass="acqPanelTable">
<p:dataTable id="acqDataTable"
widgetVar="acqTablehdsWidget"
var="acq"
value="#{bean.list}"
rendered="#{bean.renderTable}"
filteredValue="#{bean.filteredList}"
paginator="true"
paginatorPosition="bottom"
.....
....
...
..
.但不是通过服务器端:
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.update(":mainForm:tablePanel");
renderTable = true;我不明白有什么不同?
感谢您的帮助和建议
谢谢
发布于 2013-07-10 01:49:58
删除前导冒号。
requestContext.update("mainForm:tablePanel");它总是相对于UIViewRoot来解决的。前导冒号仅在当前位于视图中的UINamingContainer组件中时有效。
发布于 2019-08-26 22:06:11
从PrimeFaces 7.0开始,class RequestContext已被class PrimeFaces取代,如migration guide中所示。因此,为了更新组件,您可以调用:
PrimeFaces.Ajax currentAjax = PrimeFaces.current().ajax();
currentAjax.update("myFormId:myDatatableId");发布于 2017-10-20 05:28:26
尝试使用:
FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("formName:objectId");
它可以在primefaces 4.0中运行
https://stackoverflow.com/questions/17537078
复制相似问题