2012-04-01 13 views
13

Występuje jeden problem podczas próby dynamicznego generowania etykiety z komponentu bean. Problem polega na tym, że rozwijane menu znika z każdego wyboru, ale etykieta jest poprawnie aktualizowana. Czy istnieje obejście tego problemu?Jak zaktualizować etykietę p: selectCheckboxMenu bez zamykania komponentu po wywołaniu ajax w pakietach głównych?

<p:selectCheckboxMenu value="#{formBean.selectedMovies}" label="#{formBean.moviesLabel}" id="Movies" > 
    <f:selectItems value="#{formBean.movies}" ></f:selectItems> 
    <p:ajax update="Movies" listener="#{formBean.populateLabel}"></p:ajax> 
</p:selectCheckboxMenu> 

i

//Backing bean 
public void populateLabel() { 
    /* Populating the label with the selected options */ 
    moviesLabel = new String(""); 
    if (selectedMovies.size() == 0) { 
     moviesLabel = "Select"; 
    } else { 
     for (int i = 0; i < selectedMovies.size(); i++) { 
      if (moviesLabel.length() == 0) { 
       moviesLabel = selectedMovies.get(i); 
      } else { 
       moviesLabel = moviesLabel + "," + selectedMovies.get(i); 
      } 
     } 
    } 
} 
+0

pracujesz z najnowszym nightly zbudować? http://code.google.com/p/primefaces/issues/detail?id=3627 Jeśli nie jesteś, spróbuj ... http://repository.primefaces.org/org/primefaces/primefaces/3.3- SNAPSHOT/ – Daniel

+0

Cześć ... dziękuję za odpowiedź ... Dodałem kompilację do mojego projektu ... próbowałem dać mu wydarzenie i próbuję zrobić to samo, ale wciąż mam ten sam problem ... Chciałbym również wiedzieć, czy nowa kompilacja ma jakikolwiek inny alfabet podobny do "onmenuclose" poza zdarzeniem zmiany? –

+0

Chciałbym powiedzieć, że poprzednia metoda działa, ale problem polega na tym, że za każdym razem, gdy dokonywany jest wybór, menu zamyka się, a następnie ponownie otwierałem menu, aby dokonać innego wyboru. –

Odpowiedz

19

Oto jak

dodać widgetVar="someVarName" do p:selectCheckboxMenu

i zmodyfikować p:"ajax dodając oncomplete="someVarName.show()"

kompletny kod:

<p:selectCheckboxMenu widgetVar="someVarName" value="#{usersManagmentPage.selectedMovies}" 
     label="#{usersManagmentPage.moviesLabel}" id="Movies" > 
    <f:selectItems value="#{usersManagmentPage.movies}" ></f:selectItems> 
    <p:ajax oncomplete="someVarName.show()" listener="#{usersManagmentPage.populateLabel}" update="Movies" ></p:ajax> 
</p:selectCheckboxMenu> 

W najnowszych PrimeFaces należy używać oncomplete="PF('someVarName').show()" zamiast oncomplete="someVarName.show()"

+0

: Cześć dzięki dodaniu nazwy widżetu zrobiłem dla mnie. Dzięki za tonę. :) –

+1

Jeśli ktoś się zastanawia: Do tej pory musisz użyć oncomplete = "PF (" someVarName ") show()" aby to zadziałało - Trochę zajęło mi odkrycie – Nitek

+1

Sortowania utworów, ale z tym rozwiązanie, gdy menu jest ponownie otwierane przez show(), zawsze jest ponownie pozycjonowane na górze listy pozycji menu, którym może być PITA, gdy masz wpisy meny. Wszelkie pomysły dotyczące obejścia tego zachowania? – jpvee

Powiązane problemy