GWTP Неверная попытка выявить место ошибки, но затем работает нормально
У меня настроено несколько мест, и они работают правильно, за исключением задержки, вызванной этой проблемой. Они используют вложенные ведущие. Для одного места, кажется, что любая повторная попытка загрузить его вызывает бесконечный цикл обнаружения ошибки / несанкционированного места (не знаю почему, не задан привратник), но затем загружает страницу правильно. У меня проблема с задержкой и ненужным спамом в журнале, который он вызывает - он правильно загружает страницу, почему он не может сделать это, не пройдя сначала цикл? У кого-нибудь есть идеи?
-- ОБНОВИТЬ --
Я использую GWTP 1.4 с GWT 2.7.0, но сначала проект был создан с использованием GWTP 0.6 или, может быть, раньше. Мы обновили устаревшие и т. Д. По мере обновления, но я знаю, что остались анахронизмы.
Я попытался переключить наш ClientPlaceManager с настройками по умолчанию, привязал ErrorPlace и UnauthorizedPlace к нашей домашней странице и удалил свой привратник, но он все еще пытается перейти на место ошибки (переопределил метод reveErrorPlace и заметил, что он выдает ошибку для действительного токена который был загружен хотя бы один раз уже во время этого сеанса. В частности, на одной странице ни одна из фаз жизненного цикла докладчика не запускается, хотя докладчик виден (я думаю, что только в Firefox ломается). Я действительно не понимаю этого.
- ОБНОВЛЕНИЕ 2 -
Я удалил привратники (даже указав @NoGatekeeper), убедился, что у места ошибки / неавторизованного места есть @NoGatekeeper и существует, и переопределилкартильно откройте PlacePlace (request, updateUrl) для вывода результатов, и добавил попытку / перехват - и это делает точно то же самое. Бесконечный цикл, но все доступно. мои выходные данные отладки даже показывают, что он пытается обнаружить место ошибки, но это никогда не происходит, только ошибки. Это расстраивает без конца.
Трассировки стека:
SEVERE: Exception caught: Encountered repeated errors resulting in an infinite
loop. Make sure all users have access to the pages revealed by revealErrorPlace
and revealUnauthorizedPlace. (Note that the default implementations call
revealDefaultPlace)
com.google.gwt.event.shared.UmbrellaException: Exception caught:
Encountered repeated errors resulting in an infinite loop. Make sure all users
have access to the pages revealed by revealErrorPlace and
revealUnauthorizedPlace. (Note that the default implementations call
revealDefaultPlace)
at Unknown.fillInStackTrace_0_g$(student-0.js@36:10580)
at Unknown.Throwable_3_g$(student-0.js@8:10535)
at Unknown.Exception_3_g$(student-0.js@18:10678)
at Unknown.RuntimeException_3_g$(student-0.js@18:61481)
at Unknown.UmbrellaException_3_g$(student-0.js@25:133542)
at Unknown.UmbrellaException_5_g$(student-0.js@26:133603)
at Unknown.fireEvent_7_g$(student-0.js@13:133134)
at Unknown.fireEvent_12_g$(student-0.js@22:154354)
at Unknown.fire_8_g$(student-0.js@17:132936)
at Unknown.fireValueChangedEvent_0_g$(student-0.js@3:154358)
at Unknown.onHashChanged_0_g$(student-0.js@29:154297)
at Unknown.apply_0_g$(student-0.js@28:109006)
at Unknown.entry0_0_g$(student-0.js@16:109062)
at Unknown.anonymous(student-0.js@14:109042)
Caused by: java.lang.RuntimeException: Encountered repeated errors resulting in
an infinite loop. Make sure all users have access to the pages revealed by
revealErrorPlace and revealUnauthorizedPlace. (Note that the default
implementations call revealDefaultPlace)
at Unknown.fillInStackTrace_0_g$(student-0.js@36:10580)
at Unknown.Throwable_2_g$(student-0.js@8:10526)
at Unknown.Exception_2_g$(student-0.js@18:10672)
at Unknown.RuntimeException_2_g$(student-0.js@18:61475)
at Unknown.startError_0_g$(student-0.js@11:92009)
at Unknown.error_2_g$(student-0.js@8:91772)
at Unknown.doRevealPlace_0_g$(student-0.js@10:91762)
at Unknown.revealPlace_1_g$(student-0.js@8:91921)
at Unknown.revealPlace_0_g$(student-0.js@8:91908)
at Unknown.revealErrorPlace_1_g$(student-0.js@8:92109)
at Unknown.error_2_g$(student-0.js@8:91773)
at Unknown.doRevealPlace_0_g$(student-0.js@10:91762)
at Unknown.handleTokenChange_0_g$(student-0.js@12:91848)
at Unknown.onValueChange_4_g$(student-0.js@8:91888)
at Unknown.dispatch_87_g$(student-0.js@16:132968)
at Unknown.dispatch_88_g$(student-0.js@8:132972)
at Unknown.dispatch_0_g$(student-0.js@8:49973)
at Unknown.dispatchEvent_2_g$(student-0.js@14:133006)
at Unknown.doFire_0_g$(student-0.js@9:133250)
at Unknown.fireEvent_8_g$(student-0.js@8:133323)
at Unknown.fireEvent_7_g$(student-0.js@25:133128)
at Unknown.fireEvent_12_g$(student-0.js@22:154354)
at Unknown.fire_8_g$(student-0.js@17:132936)
at Unknown.fireValueChangedEvent_0_g$(student-0.js@3:154358)
at Unknown.onHashChanged_0_g$(student-0.js@29:154297)
at Unknown.apply_0_g$(student-0.js@28:109006)
at Unknown.entry0_0_g$(student-0.js@16:109062)
at Unknown.anonymous(student-0.js@14:109042)
1 ответ
Если вы используете DefaultPlaceManager, убедитесь, что вы привязали DefaultPlace, ErrorPlace и UnauthorizedPlace к токенам имени Presenter в своем модуле Gin. Из javadoc DefaultPlaceManager ( http://arcbees.github.io/GWTP/javadoc/apidocs/com/gwtplatform/mvp/client/proxy/DefaultPlaceManager.html):
Важный! Если вы используете этот класс, не забудьте связать DefaultPlace, ErrorPlace и UnauthorizedPlace с токенами имени Presenter в вашем модуле Gin.
Примечание. Места по умолчанию, ошибки и несанкционированные места отображаются без обновления URL-адреса браузера (отсюда и ложное значение, передаваемое в revePlace). Это позволит избежать перехода в бесконечный цикл навигации, если пользователь переместится назад (используя кнопку "Назад" браузера).
Вот пример бесконечного цикла навигации, который мы хотим избежать:
Неаутентифицированные пользователи нажимают #admin (место, зарезервированное для аутентифицированных администраторов). Открывается место #unauthorized, и URL браузера обновляется до #unauthorized. Пользователь нажимает кнопку "Назад" в своем браузере, попадает в #admin, затем #unauthorized, затем # админ и тд.
Кроме того, с https://github.com/ArcBees/GWTP/issues/296:
Убедитесь, что интерфейс прокси в вашем Presenter наследуется от ProxyPlace.