Datatable Refresh after a popup (popup generated using serv
anandsaranath Apr 29, 2009 10:35 AMHi,
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;
}
------------------------------------