У меня есть страница под названием Заказы и страница под названием OrderDetails. Как описано в превосходном MVP tutorial, я работаю с историей (с центральным ValueChangeListener) и «обработчиком событий» HandlerManager.Использование истории GWT для передачи параметров?
У меня есть обработчик, зарегистрированный для события, который кто-то нажимает на заказ, который в основном создает OrderDetailPresenter, передает идентификатор заказа (который содержится в ShowOrderDetailEvent), а затем вызывает History.newItem("orderDetails")
.
У этого есть несколько основных недостатков: этот недавно созданный шаг истории НЕ знает, какой идентификатор заказа был передан. Например, если кто-то закладок на странице сведений о заказе (или возвращается назад вперед в своем браузере) Получите пустую страницу без информации о заказе.
Итак, мой вопрос: должен ли я вместо этого делать что-то вроде History.newItem("orderDetails?id="+id)
, а затем проанализировать токен истории в моем слушателе изменения стоимости? Если да, есть ли передовая практика, API или библиотека для разбора и форматирования аргументов в строку таким образом?
Собственно GWT Учет различий в браузерах. Он даже работает с рядом различных проблем, не упомянутых здесь. Таким образом, вы можете использовать любой из указанных символов. Если вы хотите проверить это, просто взгляните на 'com.google.gwt.user.client.impl.HistoryImpl' классы в файле 'gwt-user.jar' (gwt 2.0). И он также кодирует de/encoding, поэтому вы можете перейти в '@', и он позаботится об этом. –
Звучит здорово. Я заметил, что GMail делает именно это, если я нажму на ярлык, например, URL изменится на «... # inbox/labelname». Однако они кодируют имя метки, поэтому я делаю то же самое с URL.encode и URL.decode. – Epaga
Просто чтобы быть полным. Если вы используете 'History.newItem (..)', вы не должны декодировать/кодировать, потому что GWT уже делает это для вас. Фактически, если вы это сделаете, это может привести к проблемам, упомянутым в Firefox. –