2012-04-23 41 views
0

我使用PrimeFaces JSF库和下面的代码在弹出的对话框打开一个页面:如何将数据传递给调用者页面?

<p:commandLink ajax="false" onclick="PopupMultiFileSelect('multi_file_select.faces', 'Select files','500','300'); return false;"> 
    <h:graphicImage style="border: none" value="./img/add.jpg"/> 
</p:commandLink> 

下面是javascript代码:

function PopupMultiFileSelect(pageURL, title, w, h) 
{ 
var left = (screen.width/2)-(w/2); 
var top = (screen.height/2)-(h/2); 
var childWin = window.open (pageURL, '_blank', 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left); 

if (childWin.opener==null) 
    childWin.opener = self; 

return childWin; 
} 

我在弹出的页面做的仅仅是选择一些文件名,并把字符串列表中的名字,像这样:

List<String> fileNames; 

我将如何通过列表下来给调用者页面?

+1

为什么所有这些不必要的自制HTML/JS的努力?为什么不使用随时可用的[''](http://www.primefaces.org/showcase/ui/dialog.jsf)? – BalusC 2012-04-23 14:57:04

+2

该列表在调用者页面有权访问的托管bean内部吗?如果是这样,只需在关闭弹出窗口并从列表中读取数据时刷新页面(或相关部分)即可。 – Thomas 2012-04-23 14:58:04

+0

@BalusC:它接合了我,''只是为了简单的东西;我需要在这个对话框中加载一个全新的html页面,一个带有它自己的支持bean的页面等等。在这种情况下,''也是这样的吗? – Danijel 2012-04-24 14:53:30

回答

0

您可以使用f:param将信息传递到另一个页面。 看到这个例子:

<f:param name="listnames" value="#{bean.fileNames}" /> 
+0

这不适用于这个特殊用例。 – BalusC 2012-04-24 14:56:48

+0

@java_developer:谢谢。我仍然不明白这是如何工作的。你能否给出更多的伪代码来说明? – Danijel 2012-04-24 14:57:28

+0

所以你想要从后端传递文件名到JSP,对吧? – Ved 2012-04-25 04:59:49