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 ?
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ż:
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