我正在尝试使用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;
我不明白有什么不同?
感谢您对任何建议的帮助
由于
答案 0 :(得分:25)
删除前导冒号。
requestContext.update("mainForm:tablePanel");
相对于UIViewRoot
,它始终得到解决。只有当您正坐在视图中的UINamingContainer
组件中时,前导冒号才有效。
答案 1 :(得分:1)
尝试使用:
。<强> FacesContext.getCurrentInstance()getPartialViewContext()getRenderIds()添加(&#34;表格名称:的ObjectID&#34); 强>
它适用于primefaces 4.0
答案 2 :(得分:1)
从PrimeFaces 7.0起,并按照class RequestContext中的说明,将class PrimeFaces替换为migration guide之后。因此,为了更新组件,您可以调用:
PrimeFaces.Ajax currentAjax = PrimeFaces.current().ajax();
currentAjax.update("myFormId:myDatatableId");
答案 3 :(得分:-3)
RequestContext req = RequestContext.getCurrentInstance();
req.update("YourUIBlock");