【发布时间】:2012-04-23 14:51:20
【问题描述】:
我正在使用 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;
如何将列表传递到调用者页面?
【问题讨论】:
-
为什么要为自制 HTML/JS 付出那么多不必要的努力?为什么不直接使用现成的
<p:dialog>? -
该列表是否在调用者页面可以访问的托管 bean 中?如果是这样,只需在关闭弹出窗口时刷新页面(或相关部分)并从列表中读取数据。
-
@BalusC:我觉得
<p:dialog>只是为了简单的东西;我需要在这个对话框中加载一个全新的 html 页面,一个带有它自己的支持 bean 的页面等。<p:dialog>在这种情况下也是要走的路吗? -
重新设计该页面。页面拥有自己的支持 bean 非常好。只需将其注入到父页面的 bean 中即可。
-
不,只是
<body>中的部分。将<ui:composition>放在<body>的内容周围,然后你就可以使用<ui:include>。
标签: java javascript jsf primefaces