2013-01-05 8 views
7

Utknąłem z problemem na ValueChangeListener. Używam JSF 1.2 na Weblogic 6.0.Jak uzyskać zaktualizowane wartości modelu w metodzie valueChangeListener?

Mam stronę, na górze której znajdują się 2 przyciski radiowe o nazwach Nazwa1 i Nazwa2. Po kliknięciu przycisku Nazwa 1, pod przyciskami radiowymi wyświetlane są szczegóły Nazwa1 (jest ich około 30), a po kliknięciu przycisku Nazwa 2 wyświetlane są szczegóły Nazwa2. Teraz użytkownik może zaktualizować kliknięte nazwane szczegóły. na przykład użytkownik klika Name1 i zmienia pole adresu, a następnie klika Name2 i zmienia wiek Name2. Kiedy użytkownik kliknie wstecz Name1, adres powinien zostać wyświetlony zaktualizowany o nową wartość i ponownie, gdy użytkownik kliknie Name2, wiek powinien zostać zaktualizowany.

Użyłem valueChangeListener do rozwiązania tego problemu, ponieważ potrzebuję starej i nowej wartości zmienionego zdarzenia. Problem polega na tym, że ponieważ wartośćChangeListener jest wywoływana na końcu fazy VALIDATION, nie otrzymuję zaktualizowanego adresu pola Name1 w metodzie valueChangeListener. Czy ktoś może mi pomóc, aby uzyskać jakiekolwiek obejście tego problemu?

Odpowiedz

14

jak valueChangeListener jest wywoływana po zakończeniu fazy walidacji, nie otrzymuję zaktualizowany adres pola NAME1 w metodzie valueChangeListener

kolejki wydarzenie do fazy INVOKE_ACTION tak że działa jak metoda działania (słuchacza).

public void valueChangeListenerMethod(ValueChangeEvent event) { 
    if (event.getPhaseId() != PhaseId.INVOKE_APPLICATION) { 
     event.setPhaseId(PhaseId.INVOKE_APPLICATION); 
     event.queue(); 
     return; 
    } 

    // Do your original job here. 
    // It will only be entered when current phase ID is INVOKE_APPLICATION. 
} 

Jako INVOKE_ACTION przebiega faza po UPDATE_MODEL_VALUES, zaktualizowane wartości model będzie dostępny tylko „normalny sposób”.

+1

Wielkie dzięki BalusC. To działa. Ilekroć utknąłem w niektórych kwestiach JSF, zawsze szukam twoich sugestii w stackoverflow i uważam, że twoje odpowiedzi są bardzo proste i jasne do naśladowania. Dzięki jeszcze raz. – Suman

+1

Nie ma za co. – BalusC

+0

Nie jest bezpośrednio połączony z pytaniem, ale zawiera więcej informacji, jeśli ktokolwiek skorzysta z tego rozwiązania: należy pamiętać, że jeśli posiadasz jakiekolwiek inne wartości ValueChangeListeners zarejestrowane dla tego pola, będą one uruchamiane dwa razy. Domyślam się, że jest to cichy, konkretny scenariusz, ale i tak dobrze wiedzieć. – whitesite

Powiązane problemy