2013-07-08 2 views
2

Я пытаюсь обновить таблицу с помощью RequestContext.update() Следующий код работает (JSF):Как обновить через RequestContext

<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; 

Я не понимаю, что такое другое?

Цените вашу помощь за любые советы

Благодаря

ответ

22

Снимите ведущее двоеточие.

requestContext.update("mainForm:tablePanel"); 

Он всегда разрешен относительно UIViewRoot. Ведущий двоеточие действителен только тогда, когда вы сейчас сидите в компоненте UINamingContainer в представлении.

+1

Этот ответ светит так много света на другие вещи :) –

-3
RequestContext req = RequestContext.getCurrentInstance(); 
req.update("YourUIBlock"); 
0

Попробуйте использовать:

FacesContext.getCurrentInstance() getPartialViewContext() getRenderIds() добавить ("FORMNAME: ObjectId");...

Он работает в primefaces 4.0

+0

это то, что с помощью RequestContext за кулисами делает. Это ярлык ... – Kukeltje

Смежные вопросы