Problem, który mam z kalendarzem PrimesFaces 3.4.1. Podczas korzystania z wyskakującego menu kontekstowego aktywowanego za pomocą przycisku lub pola wejściowego można wybrać tylko ważne daty, które działają dobrze, szczęśliwe dni!Kalendarz PrimeFaces akceptuje nieprawidłowe daty jako dane wejściowe
Problemy pojawiają się, gdy ręcznie dodajesz datę do pola wejściowego, jeśli dodasz niepoprawną datę, składnik kalendarza PrimeFaces najprościej zgodzi się na przekształcenie tego w prawidłową datę, a następnie wysłanie, co oznacza, że walidacja back-end nie ma wyjścia. Kilka ciekawych tłumaczenia poniżej:
- 30/02/2012 staje 2/6/2014
- 322/05/2012 staje 5/10/2038
- 01/14/2012 staje 4/1/2012
Aby odtworzyć to szaleństwo, spójrz na PrimeFaces Calendar Showcase.
Widziałem rozwiązanie wokół za pomocą atrybutu readOnlyInput='true'
, ale wydaje się, że tylko zapobiega wpisaniu liter w polu, nie numer lub ukośników. Poniżej jest jedna instancja kalendarzu I wprowadziły:
<p:calendar id="fldDateOfBirth"
value="#{pc_CreateUser.user.dateOfBirth}"
binding="#{pc_CreateUser.dobComp}"
navigator="true"
pattern="dd/MM/yyyy"
maxlength="10"
yearRange="-100"
validator="#{pc_CreateUser.validateDOB}"
title="#{msg.user_date_format_default_tip}"
converterMessage="#{msg.user_error_dob_invalid}"
readOnlyInput="true"
showOn="button" />
Rozwiązanie mądry jestem otwarty na wszelkie propozycje:
- Czy to jest typowe problemy w PrimeFaces? Czy istnieje sztuczka, której mogę użyć do naprawy?
- Czy mogę użyć JavaScript do sprawdzenia daty przed wysłaniem lub do zablokowania wszystkich danych wejściowych przez użytkownika?
- Coś jeszcze o czym nie pomyślałem!
Z góry dziękuję, to powoduje problemy przez wiele tygodni!
ta pracowała doskonale! Dziękuję za rozwiązanie i wyjaśnienie, bardzo doceniane. – JonnyIrving
Nie ma za co. – BalusC
Jeśli używasz starszych wersji primefaces przy użyciu tego convertDateTime powoduje konwersji, aby zwrócić null, a otrzymasz błędy javascript. (getDate == null). Jeśli możesz uaktualnić do wersji PF 4, to niestety nie mogę i szukam alternatywy :) – VeenarM