2011-02-04 12 views
7

Używam JSF2 i GlassFish, PrimeFaces 2.1.JSF PrimeFaces p: commandLink nie przekieruje Cię do nowej strony?

działa ta metoda showCreateProfile() zostaje trafiony, a metoda zwraca "profileForm" i przeglądarka przekierowuje do tej strony:

<h:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" /> 

Jednak to nie działa, metoda showCreateProfile() uzyskać trafienia , a metoda zwraca "profilForm", ale przeglądarka nie przekierowuje do strony. Próbowałem trzech różnych rzeczy bez powodzenia:

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" /> 

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" ajax="false" /> 

<p:commandLink action="#{profileHandler.showCreateProfile}" value="#{msg.menu_createNewProfile}" ajax="false" immediate="true"/> 

Jakieś pomysły, co robię źle?

Rob

Odpowiedz

13

The Primefaces' p:commandLink pożary domyślnie AJAX żądania. Nie zwraca całej odpowiedzi HTTP, ale tylko częściową odpowiedź HTTP, która musi zostać zaktualizowana w drzewie DOM HTML przez JS.

Masz w zasadzie dwie opcje:

  1. Wyłącz ajax przez atrybut ajax="false". Następnie uruchomi normalne żądanie HTTP.

  2. Zaktualizuj (ponownie renderuj) częściową zawartość (na tej samej stronie!) Atrybutu update="clientid". Możesz użyć atrybutu rendered do kontrolowania renderowania treści.

Jeśli nie działa, to problem leży gdzie indziej. Ponieważ h:commandLink działa i metoda działania p:commandLink również zostaje wykonana, może to tylko oznaczać, że nie uruchamiasz kodu, który Twoim zdaniem działa podczas próby ajax="false". Zweryfikuj, zapisz, przebuduj, ponownie wdróż, uruchom ponownie.

4

PrimeFaces nie obsługuje nawigowania w przód, musisz użyć przekierowania zamiast forward, jeśli chcesz nawigować w żądaniu ajaxowym lub ustawić wartość ajax na false, jak powiedział BalusC.

Powiązane problemy