2013-05-22 19 views

Odpowiedz

1

Cóż dodać znacznik wiadomość w widoku coś takiego:

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

I w aktualizacji FileUpload = „@ to test” i wiadomość zostanie wyświetlona w p: wiadomości. Możesz zmienić łatwo w warczeniu działa tak samo.

Look w primefaces pokazać więcej przykładów

+0

Witaj Tankhenk .., nie działa. –

+0

Zobacz edytowaną część pytania –

+0

Cóż, nie sądzę, że to możliwe. – Tankhenk

0

Spojrzał przykład w Primefaces gablocie i znalazłem to. Rzeczywista strona:

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

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

i klasy kontroler uploader pliku:

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

Może coś, aby pamiętać o tym, jak wyświetlać komunikaty w Primefaces

+0

Witaj ClydeFrog .., Próbowałem przykład z Twojego komentarza? Ponieważ filtrujesz w p: fileUpload używając allowTypes = "/ (\. | \ /) (Pdf) $ /", funkcja handleFileUpload() nie będzie wywoływana podczas przesyłania pliku innego niż PDF. Więc nie ma wiadomości w GROWL. –

5

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() 
     }); 
    }); 
}); 
+0

Proste i przyjemnie działające rozwiązanie. Dzięki. – James