1 Reply Latest reply on Apr 29, 2009 11:21 AM by nbelaevski

    Datatable Refresh after a popup (popup generated  using serv

    anandsaranath

      Hi,

      We have an existing application in which we generate a table using jsp. There are context menus attached to this jsp generated table. We are trying to come out with a new functionality where we are using Richfaces 3.3.0 to generate the table dynamically and attach context menu to it. All these works fine. I am hitting a roadblock when I use the context menu. On clicking on the context menu in the new jsf page, I will pop up an existing window which will have a jsp page. When the user interacts with this jsp page, I want a data table in the the new jsf page to be refreshed.

      Since the pop up acts like a separate thread (the javascript used to pop up does a window.open(url) to open this new pop up), I am clueless as to how to make that jsp / servlet to refresh this new page. I am attaching the code snippets for the same.

      Any help in this regard will be much appreciated. This is a very critical requirement for us. This is a showstopper for this.

      Regards
      Anand



      After the saInteractWithJob.jsp closes, I want the data table "queueTable" in the queueJobs.xhtml refreshed.

      ---------------------------queueJobs.xhtml--------------------
      
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:ui="http://java.sun.com/jsf/facelets"
       xmlns:h="http://java.sun.com/jsf/html"
       xmlns:f="http://java.sun.com/jsf/core"
       xmlns:a4j="http://richfaces.org/a4j"
       xmlns:rich="http://richfaces.org/rich">
      
      <div align="center">
       <h:form>
       <a4j:loadScript src="../../javascript/saSov.js" />
       <rich:contextMenu attached="false" id="menu" submitMode="ajax">
       <rich:menuItem onclick="return interactWithJob('{queue}', '{jobId}', '{iType}');">
       <a4j:support event="oncomplete" actionListener="#{SOV_SpecificQueueBean.queryJobs}" reRender="queueTable"/>
       <h:outputText value="Interact with Job {jobId})"/>
       </rich:menuItem>
       <rich:menuItem actionListener="#{SOV_SpecificQueueBean.stopJob}" reRender="queueTable">
       <h:outputText value="Stop Job {jobId})" />
       </rich:menuItem>
       </rich:contextMenu>
      
       <rich:dataTable value="#{SOV_SpecificQueueBean.valueList}" var="row" width="100%" rows="#{SOV_SpecificQueueBean.maxRecords}"
       onRowMouseOver="this.style.backgroundColor='#F8F888'"
       onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
       id="queueTable" sortMode="multiple">
       <rich:columns id="#{row.data[index]}_#{index}" value="#{SOV_SpecificQueueBean.columns}" var="col" index="index"
       sortBy="#{row.data[index]}" sortOrder="#{col.ordering}">
       <f:facet name="header">
       <h:outputText value="#{col.name}" />
       </f:facet>
       <h:outputText value="#{row.data[index]}" />
       </rich:columns>
       <rich:componentControl for="menu" operation="show" event="onRowClick">
       <f:param value="#{row.jobReqDesc.jobId}" name="jobId" />
       <f:param value="#{row.jobReqDesc.interactionType}" name="iType" />
       <f:param value="#{row.jobReqDesc.queue}" name="queue" />
       </rich:componentControl>
       </rich:dataTable>
       </h:form>
      </div>
      
      </html>
      --------------------------------------------
      
      interactWithJob javascript --
      
      function interactWithJob(queue, job, interactionType) {
       alert("I am inside interact");
       var winLink = "/activator/jsp/saInteractWithJob.jsp?queueName=" + queue + "&jobId=" + job + "&inter
      actionType=" + interactionType;
       window.open(winLink,'interact','resizable=yes,status=yes,width=750,height=300,scrollbars=yes');
       return true;
      }
      
      ------------------------------------