2012-12-28 11 views
7

Mam przycisk polecenia (przycisk Anuluj, aby być specyficznym), że chcę pominąć sprawdzanie poprawności niektórych składników na mojej stronie. Kiedy mam przycisk "= true" ustawiony na moim przycisku poleceń, atrybut aktualizacji nie działa. Przez "niedziałający" mam na myśli to, że wartości na: centerForm: p_definition nie resetują się do tego, czym powinny być. Jeśli wybiorę element z menu rozwijanego lub wprowadzę dane do tekstu wejściowego, informacje powinny zniknąć po kliknięciu przycisku anuluj. Ustawienie natychmiast = "fałsz" lub całkowite jego opuszczenie powoduje zresetowanie pól zgodnie z oczekiwaniami. Oto definicja przycisku polecenia, z którym mam problem.Immediate = "true" powoduje, że aktualizacja = "komponent" kończy się niepowodzeniem

<p:commandButton value="Cancel" style="float: right;" 
    immediate="true" 
    actionListener="#{manageBomPropHandler.doCancel()}" 
    update=":centerForm:p_definition"/> 

Czy to oczekiwane zachowanie z natychmiastowego = "prawda"? Jeśli tak, to w jaki sposób udało ci się obejść ten przycisk anulowania?

Odpowiedz

7

„Update” będzie nazwane/wykonywane w fazie Wartość Aktualizacja modelu. Po ustawieniu atrybutu "natychmiastowy" dla polecenia przycisku, faza ta jest ignorowana. Zob. Poniżej obrazy, aby uzyskać więcej szczegółów. Standard Lifecycle executes Update Model Values phase

  P1: Standard Lifecycle executes Update Model Values phase 

Immediate Lifecycle ignored Update Model Values phase

  P2: Immediate Lifecycle ignored Update Model Values phase 
+2

Ładny wizualny schemat cyklu życia. Jeśli twój, dobra robota, bardzo dobrze zrobione. Jeśli nie twój, to proszę o dodanie atrybucji? – SteveS

+3

Źródło: http://www.javacodegeeks.com/2012/01/jsf-and-immediate-attribute-command.html – CSchulz

1

W moim przypadku, aby zaktualizować pola, dołączyłem p: ajax przeciwko wymaganemu komponentowi. Zapewniło to aktualizację odpowiednich pól/zmiennych w komponencie bean bean, gdy tylko użytkownik wprowadzi zmiany w dowolnym z tych pól.

Kolejnym wymaganiem było odświeżenie tabeli danych po tym, jak użytkownik kliknie natychmiastowy - prawdziwy przycisk polecenia. W tym celu użyłem kodu jak:

RequestContext.getCurrentInstance().reset("Datatable ID"); 
0

Jeśli może pomóc, nie ma już rozwiązanie dla czystych pól wejściowych z primefaces:

<p:commandButton value="Reset Tag" update="panel" process="@this" style="margin-right:20px;" > 
    <p:resetInput target="panel" /> 
</p:commandButton> 

LUB

<h:commandButton value="Reset p:ajax" style="margin-right:20px;" > 
    <p:ajax update="panel" resetValues="true" /> 
</h:commandButton> 

Źródło: http://www.primefaces.org/showcase/ui/misc/resetInput.xhtml

Powiązane problemy