【问题标题】:p:fileDownload not working with h:headp:fileDownload 不适用于 h:head
【发布时间】:2012-12-31 15:18:26
【问题描述】:

我有一个这样的<p:download>

<h:form id="form1">
    <p:commandButton id="downloadLink" value="Download" ajax="false" onclick="PrimeFaces.monitorDownload(start, stop)"   
        icon="ui-icon-arrowthichk-s" actionListener="#{search.downloadActionListener}">   
        <p:fileDownload value="#{search.dwnloadFile}" />  
    </p:commandButton> 
</h:form>

它不起作用。下载按钮只是重新加载页面并且不显示 另存为 对话框。在检查了每一件事之后,我才知道如果我从页面中删除&lt;h:head&gt; 标签,它就会开始工作。

如果没有 &lt;h:head&gt;,我将无法工作,因为 PrimeFaces 看起来'n'feel 并且所有 ajax 功能都依赖于它。


更新:生成的HTML&lt;head&gt;&lt;h:head&gt;是这样的:

<head>
    <link href="/Project2.0/javax.faces.resource/themes/sam/theme.css.xhtml?ln=icefaces.ace" rel="stylesheet" type="text/css" />
    <link href="/Project2.0/rfRes/skinning.ecss.xhtml?db=eAG7mShzEgAFjAIg" rel="stylesheet" type="text/css" />
    <link href="/Project2.0/javax.faces.resource/primefaces.css.xhtml?ln=primefaces" rel="stylesheet" type="text/css" />
    <script src="/Project2.0/javax.faces.resource/jquery/jquery.js.xhtml?ln=primefaces" type="text/javascript"></script>
    <script src="/Project2.0/javax.faces.resource/primefaces.js.xhtml?ln=primefaces" type="text/javascript"></script>
    <link href="/Project2.0/javax.faces.resource/dock/dock.css.xhtml?ln=primefaces" rel="stylesheet" type="text/css" />
    <script src="/Project2.0/javax.faces.resource/dock/dock.js.xhtml?ln=primefaces" type="text/javascript"></script>
    <link href="/Project2.0/javax.faces.resource/layout/layout.css.xhtml?ln=primefaces" rel="stylesheet" type="text/css" />
    <script src="/Project2.0/javax.faces.resource/layout/layout.js.xhtml?ln=primefaces" type="text/javascript"></script>
    <script src="/Project2.0/javax.faces.resource/jsf.js.xhtml?ln=javax.faces" type="text/javascript"></script>
    <script src="/Project2.0/javax.faces.resource/icepush.js.xhtml?v=9261182" type="text/javascript"></script>
    <script src="/Project2.0/javax.faces.resource/bridge.js.xhtml?v=9261182" type="text/javascript"></script>
    <script type="text/javascript">document.documentElement.isHeadUpdateSuccessful=true;</script>
    <style type="text/css">.ice-blockui-overlay {position: absolute;background-color: white;z-index: 28000;opacity: 0.22;filter: alpha(opacity = 22);}.ice-status-indicator-overlay {position: absolute;background-color: white;z-index: 28000;opacity: 0.22;filter: alpha(opacity = 22);}</style>
    <script src="/Project2.0/javax.faces.resource/compat.js.xhtml" type="text/javascript"></script>
    <script src="/Project2.0/javax.faces.resource/icefaces-compat.js.xhtml" type="text/javascript"></script>
    <title>
        Project
    </title>
    <link href="../Styles/Site.css" rel="stylesheet" type="text/css" />
    <link href="../Styles/jquery-ui-1.8.6.custom.css" rel="stylesheet" type="text/css" />
</head>

如果没有&lt;h:head&gt;,它是这样的:

<head>
    <title>
        Project
    </title>
    <link href="../Styles/Site.css" rel="stylesheet" type="text/css" />
    <link href="../Styles/jquery-ui-1.8.6.custom.css" rel="stylesheet" type="text/css" />
</head>

【问题讨论】:

  • 比较两个 HTML 文档的标题,看看是否有任何内容从工作页面丢失/覆盖到非工作页面。
  • 我检查了两者不同的 html。我无法理解这一点,因为我还是 JSF 和 Web 开发的新手。

标签: jsf-2 primefaces download facelets head


【解决方案1】:

&lt;h:head&gt; 的 HTML 输出表明您正在将 PrimeFaces 与 ICEfaces 混合使用。您的具体问题的主要原因是来自 ICEfaces 的这个脚本:

<script src="/Project2.0/javax.faces.resource/icefaces-compat.js.xhtml" type="text/javascript"></script>

This basically turns every non-ajax submit button into an ajax submit button。这也包括下载按钮。但是不能用ajax下载文件。

完全移除 ICEfaces。你不需要它。 It's basically a clone of PrimeFaces 2.x。但如果您已经在使用 PrimeFaces 3.x,那么 ICEfaces 完全没有附加价值。也许这是之前对各种 JSF 组件库进行试验的遗留物。

另见:


与具体问题无关,HTML 输出还表明您在运行时类路径中也有 RichFaces。虽然理论上应该可以与 PrimeFaces 一起正常工作,但我不建议将它们混合使用。 RichFaces 本质上没有 PrimeFaces 不提供的任何东西。

【讨论】:

  • “它基本上是一个克隆”。没错,哈哈哈
  • 非常感谢您的详细解释。实际上我正在使用icefaces的fileupload标签,我发现它比primefaces标签更容易。我想我现在必须使用 primefaces 文件上传。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 2011-10-19
  • 1970-01-01
  • 2014-12-25
相关资源
最近更新 更多