我发现很难让JSNI直接与Errai合作,例如这段代码:
private static native void _createCallOut(JavaScriptObject callout)/*-{
$wnd.hopscotch.getCalloutManager().createCallout(callout);
}-*/;
这个JSNI从
被称为roothing@PageShowing
public void onShow() {
CallOut startCallOut = new CallOut("dashboard", Placement.RIGHT);
startCallOut.setTitle("Take an example tour");
startCallOut.setContent("Start by taking an example tour to see GWT-Tour in action!");
startCallOut.setWidth(240);
startCallOut.centerXOffset();
startCallOut.centerArrowOffset();
GwtTour.createCallOut(startCallOut); // Here!
}
如果第一个参数是手动输入到GWT应用程序HTML中的DIV的ID,那么这个Java代码CallOut
可以正常工作,但如果它在Errai的页面模板上,则不起作用。任何想法为什么它不起作用?
答案 0 :(得分:2)
在将模板添加到DOM之前,调用<{1>}生命周期方法。来自@PageShowing
JavaDoc:
表示应在
PageShowing
时调用目标方法 小部件它是即将显示的成员 导航内容面板:在窗口小部件的@Page
字段之后 已更新,并在导航内容中显示之前 面板。
请尝试使用@PageState
。
答案 1 :(得分:1)
我设法让它工作在@PageShowing
或@PageShown
,但在onAttach
或@Page
内:
@Override
protected void onAttach() {
super.onAttach();
// Works fine inside
}