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

标签: java javascript jsf primefaces


【解决方案1】:

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

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

【讨论】:

  • 这不适用于此特定用例。
  • @java_developer:谢谢。我仍然不明白这将如何工作。能不能多给点伪代码来说明一下?
  • 假设我有页面 A 打印文件名,页面 B 从页面 A 中弹出,我在其中选择这些文件名。我如何将它们从 B 页传递到 A 页?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 2012-01-01
相关资源
最近更新 更多