0

私は<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>

うまくいきません。ダウンロード ボタンはページをリロードするだけで、[名前を付けて保存] ダイアログは表示されません。<h:head>すべてを確認した後、ページからタグを削除すると、機能し始めることがわかりました。

<h:head>PrimeFaces のルック アンド フィールとすべての ajax 機能がそれに依存しているため、これなしでは作業できません。


更新: 生成された HTML<head>は次の<h:head>ようになります。

<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>

それなし<h:head>では次のようになります:

<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>
4

1 に答える 1

1

の HTML 出力は、<h:head>PrimeFace と ICEface を混在させていることを示唆しています。具体的な問題の主な原因は、ICEfaces の次のスクリプトです。

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

これは基本的に、すべての非 ajax 送信ボタンを ajax 送信ボタンに変えます。これには、ダウンロード ボタンも含まれます。ただし、ajax でファイルをダウンロードすることはできません。

ICEfaces を完全に削除します。あなたはそれを必要としません。これは基本的に PrimeFaces 2.x のクローンです。しかし、すでに PrimeFaces 3.x を使用している場合、ICEfaces に追加の価値はまったくありません。おそらく、さまざまな JSF コンポーネント ライブラリを使った以前の実験の残り物だったのでしょう。

以下も参照してください。


具体的な問題とは関係ありませんが、HTML 出力は、ランタイム クラスパスにも RichFaces があることを示唆しています。理論的には PrimeFaces と一緒にうまく動作するはずですが、それらを混在させることはお勧めしません。基本的に、RichFaces には、PrimeFaces がまだ提供していないものは何もありません。

于 2013-01-18T11:25:38.927 に答える