Mam stronę o nazwie Zamówienia i stronę o nazwie "Szczegóły zamówienia". Jak opisałem w znakomitym MVP tutorial pracuję z Historią (z centralną ValueChangeListener) i "HandlerManager" magistrali zdarzeń.Korzystanie z historii GWT do przekazywania parametrów?
Mam zarejestrowanego handlerka dla zdarzenia, w którym ktoś kliknie zamówienie, które zasadniczo tworzy OrderDetailPresenter, przekazuje identyfikator zamówienia (który jest zawarty w ShowOrderDetailEvent), a następnie wywołuje History.newItem("orderDetails")
.
Ma to kilka poważnych wad: ten nowo utworzony krok historii NIE DOTYCZY, który identyfikator zamówienia został przekazany. Na przykład, jeśli ktoś umieści zakładkę na stronie szczegółów zamówienia (lub wróci do przeglądarki w przód), Otrzymam pustą stronę bez szczegółów zamówienia.
Moje pytanie brzmi: czy zamiast tego powinienem zrobić coś takiego jak History.newItem("orderDetails?id="+id)
, a następnie przeanalizować token historii w moim odbiorniku zmian wartości? Jeśli tak, czy istnieje najlepsza praktyka, interfejs API lub biblioteka do analizowania i formatowania argumentów na łańcuch znaków w ten sposób?
Właściwie GWT UWAgA bierze pod uwagę różnice w przeglądarkach. Działa nawet w wielu różnych kwestiach nie wymienionych tutaj. Możesz więc użyć dowolnej z wymienionych postaci. Jeśli chcesz to sprawdzić, spójrz na klasy 'com.google.gwt.user.client.impl.HistoryImpl' w pliku 'gwt-user.jar' (gwt 2.0). Ma również kodowanie/deszyfrowanie, dzięki czemu można przekazać w '@' i zajmie się nim. –
Brzmi świetnie. Zauważyłem, że GMail również to robi, jeśli kliknę na przykład etykietę, adres URL zmieni się na "... inbox/labelname". Jednak URL kodują nazwę etykiety, więc robię to samo z URL.encode i URL.decode. – Epaga
Po prostu gotowe. Jeśli użyjesz 'History.newItem (..)' nie powinieneś dekodować/kodować, ponieważ GWT już to robi. W rzeczywistości, jeśli to zrobisz, może to prowadzić do wspomnianych problemów dotyczących Firefoksa. –