Codzienne archiwa: 29 kwietnia 2011

Zaawansowane formularze XForms w projekcie GWT

Nieodłączną częścią każdej aplikacji czy to strony internetowej są formularze. Często w ich skład wchodzi kilka zwykłych pól tekstowych wraz z przyciskiem wysyłającym formularz, ale zdarzają się też bardziej rozbudowane twory. Sam HTML udostępnia większość popularnych typów pól formularzy, jednak obsługę zdarzeń i akcji musimy pisać sami. Ogromnym ułatwieniem są tu możliwości GWT, dostarczające nam takie same kontrolki jak w HTML’u, do których w łatwy sposób można podpinać handlery i obsługiwać wszelkie zdarzenia. Jeśli to za mało, z pomocą przychodzą biblioteki typu GXT czy SmartGWT dokładające olbrzymie ilości własnych elementów formularzy. Niewątpliwą zaletą GWT i bibliotek pomocniczych są szerokie możliwości wczytywania danych do formularzy oraz poszczególnych ich pól (np. listy rozwijanej): dane możemy pobierać poprzez RPC, ładować z wystawionego przez serwlet XML’a lub JSON’a, bądź w jakikolwiek inny sposób możliwy do oprogramowania w GWT. Wydawałoby się, że więcej już nie trzeba!

W praktyce okazuje się, że formularze pisane w GWT mają jedną zasadniczą wadę – nie są tworzone dynamicznie. Z góry określamy, jakie pola znajdą się na stronie i jakie dane zostaną do nich załadowane. Możemy generować dynamicznie kod czystego HTML’a, tracimy tu jednak zalety łatwej w oprogramowaniu obsługi zdarzeń. Możemy też napisać kod, który będzie tworzył dynamicznie formularz w GWT, jednak sami musimy stworzyć potrzebne struktury danych oraz niezbędne parsery i generatory. Jeśli skończy się na formularzach złożonych z pól tekstowych, prostych list wyboru, checkbox’ów, przycisków radio, czy innych podstawowych elementów, to jesteśmy w domu. Gorzej, jeśli dynamicznie chcemy też generować układy elementów formularza (elementy w poziomie lub w pionie, zakładki, kolejne strony formularza). Dokładamy jeszcze do tego obsługę zdarzeń na wszystkich elementach i tworzenie własnych akcji i już mamy robotę na kilka długich tygodni :)

Czytaj więcej »