8

<p:fileUpload>PDFのみに制限されているものを使用しています。ただし、コンポーネントinvalidFileMessage内に表示されます。<p:fileUpload>代わりにどのように表示でき<p:growl>ますか?

<p:fileUpload allowTypes="/(\.|\/)(pdf)$/"
              invalidFileMessage="File is Invalid. Only PDF files are allowed" />
4

3 に答える 3

9

このサーバー側を処理することはできません。ファイルの種類は、サーバー側でコードを実行することなく、クライアント側で検証されます。FacesMessageしたがって、手動で作成および/または明示的に追加することを提案する提案<p:message(s)>は、思慮深く、テストされていません。

jQuery を使用する必要があります。それはすべてを解決します。

ソース コードに基づいて、メッセージ コンテナーの架空のイベントをリッスンし、メッセージ コンテナーをフォームの最後に移動するのfileupload.jsが最善の策です。show

最初に拡張$.show()して、実際にshowイベントをトリガーします。

(function($) {
    var originalShowFunction = $.fn.show;
    $.fn.show = function() {
        this.trigger("show");
        return originalShowFunction.apply(this, arguments);
    };
})(jQuery);

次に、基本的にファイルアップロードメッセージが表示されたときに実行されるリスナーをshowイベントで作成し、すべてのメッセージを解析してJS APIのrenderMessage()機能を使用します。以下の例は、同じページのどこかにあると<p:growl>仮定しています。<p:growl widgetVar="growl">

$(document).on("show", ".ui-fileupload-content>.ui-messages", function() {
    $(this).children().hide().find("li").each(function(index, message) {
        var $message = $(message);
        PF("growl").renderMessage({
            summary: $(".ui-messages-error-summary", $message).text(),
            detail: $(".ui-messages-error-detail", $message).text()
        });
    });
}); 
于 2015-12-28T14:14:29.843 に答える
-1

ページに次のようなメッセージ タグを追加します。

<p:messages id="test" autoUpdate="true" />

そして fileupload update="@this,test" で、あなたのメッセージは p:messages に表示されます。うなり声も同じように簡単に変更できます。

その他の例については、primefaces ショーケースをご覧ください。

于 2013-05-22T07:28:00.910 に答える
-2

Primefaces ショーケースで例を調べたところ、これが見つかりました。実際のページ:

<p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}"  
              mode="advanced"   
              update="messages"
              allowTypes="/(\.|\/)(pdf)$/"/>  

<p:growl id="messages" showDetail="true"/>  

そして、ファイル アップローダ コントローラ クラス:

public void handleFileUpload(FileUploadEvent event) {  
    FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");  
    FacesContext.getCurrentInstance().addMessage(null, msg);  
}  

Primefacesでメッセージを表示する方法について覚えておくべきことがあります

于 2013-05-22T07:36:35.017 に答える