<p:fileUpload>
PDFのみに制限されているものを使用しています。ただし、コンポーネントinvalidFileMessage
内に表示されます。<p:fileUpload>
代わりにどのように表示でき<p:growl>
ますか?
<p:fileUpload allowTypes="/(\.|\/)(pdf)$/"
invalidFileMessage="File is Invalid. Only PDF files are allowed" />
<p:fileUpload>
PDFのみに制限されているものを使用しています。ただし、コンポーネントinvalidFileMessage
内に表示されます。<p:fileUpload>
代わりにどのように表示でき<p:growl>
ますか?
<p:fileUpload allowTypes="/(\.|\/)(pdf)$/"
invalidFileMessage="File is Invalid. Only PDF files are allowed" />
このサーバー側を処理することはできません。ファイルの種類は、サーバー側でコードを実行することなく、クライアント側で検証されます。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()
});
});
});
ページに次のようなメッセージ タグを追加します。
<p:messages id="test" autoUpdate="true" />
そして fileupload update="@this,test" で、あなたのメッセージは p:messages に表示されます。うなり声も同じように簡単に変更できます。
その他の例については、primefaces ショーケースをご覧ください。
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でメッセージを表示する方法について覚えておくべきことがあります