GWT 超链接异常行为 - 重定向到 http://localhost:8080/#
GWT Hyperlink strange behavior - redirecting to http://localhost:8080/#
好吧,这很奇怪。
我的菜单只有 Hyperlink
:
Hyperlink eventCalendar= new Hyperlink("Eventkalender", "eventCalendar=" + store.getId());
我正在听 MainViewPresenter
中的 ValueChangeEvent
。请注意,我什么都没做。在创建监听器之前,我将 SimplePanel
设置为 ActivityManager
:
的显示
App.activityManager.setDisplay(this.mainView.getMainContentContainer());
History.addValueChangeHandler(new ValueChangeHandler<String>() {
@Override
public void onValueChange(ValueChangeEvent<String> event) {
String historyToken = event.getValue();
GWT.log("onValueChange() historyToken " + historyToken);
}
});
但是如果我点击 link 会发生什么:
首先,为了眼睛的blink我可以看到浏览器URL改为
http://localhost:8080/#eventCalendar=1
但它立即变回
http://localhost:8080/#
这会导致我的目标网页加载到我声明为显示的 SimplePanel
中(见上文)。
有没有人知道是什么导致了这种行为,因为这对我来说没有意义?为什么 URL 又变了?我使用的 History
或 Hyperlink
错了吗?
很可能你的 PlaceHistoryMapper
returns null
用于 eventCalendar=1
令牌,所以它被替换为 默认位置 你给了PlaceHistoryHandler
。如果您使用基于 PlaceTokenizer
s 的 GWT.create()
和工厂 and/or @WithTokenizers
,这意味着您没有 PlaceTokenizer
用于空-string 前缀 (@Prefix("")
),或者那个分词器 returns null
.
话虽如此,您可能更愿意尝试直接使用地点,而不是浏览 历史。这意味着在某些小部件上使用 ClickHandler
并在适当的位置调用 PlaceController#goTo
。理想情况下,该小部件将是一个 Anchor
,其 href 是根据给定位置的 PlaceHistoryMapper
的 getToken
结果计算得出的(href 实际上看起来取决于你的 Historian
;如果你坚持默认行为,那么只需在返回的标记前加上一个 #
。
好吧,这很奇怪。
我的菜单只有 Hyperlink
:
Hyperlink eventCalendar= new Hyperlink("Eventkalender", "eventCalendar=" + store.getId());
我正在听 MainViewPresenter
中的 ValueChangeEvent
。请注意,我什么都没做。在创建监听器之前,我将 SimplePanel
设置为 ActivityManager
:
App.activityManager.setDisplay(this.mainView.getMainContentContainer());
History.addValueChangeHandler(new ValueChangeHandler<String>() {
@Override
public void onValueChange(ValueChangeEvent<String> event) {
String historyToken = event.getValue();
GWT.log("onValueChange() historyToken " + historyToken);
}
});
但是如果我点击 link 会发生什么:
首先,为了眼睛的blink我可以看到浏览器URL改为
http://localhost:8080/#eventCalendar=1
但它立即变回
http://localhost:8080/#
这会导致我的目标网页加载到我声明为显示的 SimplePanel
中(见上文)。
有没有人知道是什么导致了这种行为,因为这对我来说没有意义?为什么 URL 又变了?我使用的 History
或 Hyperlink
错了吗?
很可能你的 PlaceHistoryMapper
returns null
用于 eventCalendar=1
令牌,所以它被替换为 默认位置 你给了PlaceHistoryHandler
。如果您使用基于 PlaceTokenizer
s 的 GWT.create()
和工厂 and/or @WithTokenizers
,这意味着您没有 PlaceTokenizer
用于空-string 前缀 (@Prefix("")
),或者那个分词器 returns null
.
话虽如此,您可能更愿意尝试直接使用地点,而不是浏览 历史。这意味着在某些小部件上使用 ClickHandler
并在适当的位置调用 PlaceController#goTo
。理想情况下,该小部件将是一个 Anchor
,其 href 是根据给定位置的 PlaceHistoryMapper
的 getToken
结果计算得出的(href 实际上看起来取决于你的 Historian
;如果你坚持默认行为,那么只需在返回的标记前加上一个 #
。