【问题标题】:How to update via RequestContext如何通过 RequestContext 更新
【发布时间】:2013-07-06 09:38:26
【问题描述】:

我正在尝试使用 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;

我不明白有什么不同?

感谢您对任何建议的帮助

谢谢

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    删除前导冒号。

    requestContext.update("mainForm:tablePanel");
    

    它总是相对于UIViewRoot 进行解析。仅当您当前位​​于视图中的 UINamingContainer 组件中时,前导冒号才有效。

    【讨论】:

    • 对于所有感兴趣的人来说,类 RequestContext 在 PF 6.2 中已被弃用,并完全被 PF 7.0 中的 PrimeFaces 类取代
    【解决方案2】:

    从 PrimeFaces 7.0 和之后的 class RequestContext 被 class PrimeFaces 替换,如 migration guide 所示。因此,为了更新组件,您可以调用:

    PrimeFaces.Ajax currentAjax = PrimeFaces.current().ajax();
    currentAjax.update("myFormId:myDatatableId");
    

    【讨论】:

      【解决方案3】:

      尝试使用:

      FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("formName:objectId");

      它适用于 primefaces 4.0

      【讨论】:

      • 这就是在幕后使用 requestContext 所做的。这是一条捷径……
      【解决方案4】:
      RequestContext req = RequestContext.getCurrentInstance();
      req.update("YourUIBlock");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-21
        • 1970-01-01
        • 2015-08-29
        • 2020-07-21
        • 2013-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多