Jak pominąć walidację po kliknięciu określonego przycisku?

Mam formularz z walidatorem na jednym polu. Mam dwa h:commandButton s: Ok i Anuluj . Kiedy wprowadzam błędne dane i klikam Anuluj , otrzymuję komunikat potwierdzający. Co muszę zrobić, aby walidator nie działał po kliknięciu anuluj ?

Author: bruno, 2011-05-19

1 answers

W przypadku, gdy nie używasz ajax, lub nadal jesteś na JSF 1.x, a naprawdę trzeba wywołać akcję biznesową w metodzie cancel() (tzn. samo przeładowanie strony jest niewystarczające), wtedy najlepiej dodać immediate="true" do przycisku. W ten sposób wszystkie pola wejściowe, które nie mają immediate="true", zostaną pominięte podczas przetwarzania.

<h:commandButton value="Cancel" action="#{bean.cancel}" immediate="true" />

Na JSF 2.x, znacznie lepiej jest przesłać formularz przez <f:ajax>, który domyślnie przetwarza tylko @this zamiast @form.

<h:commandButton value="Cancel" action="#{bean.cancel}">
    <f:ajax />
</h:commandButton>

Jeśli chcesz przejść do innej strony tutaj Dodaj ?faces-redirect=true do wyniku w metodzie cancel().

Lub, jeśli rzeczywiście nie trzeba wywoływać żadnych działań biznesowych w ogóle, a następnie po prostu użyć <h:button> w którym bezpośrednio określić (niejawny) wynik przypadku nawigacji.

<h:button value="Cancel" outcome="previouspage" />

To w zasadzie przeładuje stronę za pomocą żądania GET. <h:button> nie istnieje w JSF 1.x, ale można też użyć do tego zwykłego HTML + JS.

Zobacz też:

 62
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55