Nie można obsługiwać ten po stronie serwera . Typ pliku jest sprawdzany po stronie klienta bez uderzania w żaden kod po stronie serwera. Tak więc wszelkie sugestie sugerujące ręczne tworzenie FacesMessage
i/lub jawnie dodające <p:message(s)>
są niewygodne i nieprzetestowane.
You should use jQuery. It solves everything.
na podstawie kodu źródłowego fileupload.js
, najlepiej jest słuchać na fikcyjnym show
przypadku pojemnika wiadomość, a następnie przenieść kontener wiadomości do końca formularza.
Najpierw należy uruchomić $.show()
, aby wywołać zdarzenie show
.
(function($) {
var originalShowFunction = $.fn.show;
$.fn.show = function() {
this.trigger("show");
return originalShowFunction.apply(this, arguments);
};
})(jQuery);
Następnie wystarczy utworzyć słuchacza na show
wydarzenia, które w zasadzie działa, gdy pojawiają się komunikaty Prześlij plik, a następnie analizować każdą wiadomość i użyć funkcji renderMessage()
z <p:growl>
JS API. Poniższy przykład zakłada, że masz <p:growl widgetVar="growl">
gdzieś na tej samej stronie.
$(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()
});
});
});
Witaj Tankhenk .., nie działa. –
Zobacz edytowaną część pytania –
Cóż, nie sądzę, że to możliwe. – Tankhenk