2014-03-04 48 views

回答

1

最好使用以下方法。

在需要一些的onLoad動作的任何組件以下的方法進行添加:

@Override 
public void renderHead(IHeaderResponse response) { 
    super.renderHead(response); 
    response.render(
       OnDomReadyHeaderItem.forScript("alert('REPLACE ALERT BY YOUR SCRIPT')")); 
} 

如果你需要用額外參數等動態腳本編寫我建議如下:

private final static TextTemplate template 
    = new PackageTextTemplate(YourComponentOrPage.class, "your-js-template.js"); 
@Override 
public void renderHead(IHeaderResponse response) { 
    super.renderHead(response); 
    Map<String, Object> params =new HashMap<String, Object>(); 
    params.put("parameter1", parameter1Value); 
    params.put("parameter2", parameter2Value); 
    response.render(OnDomReadyHeaderItem.forScript(template.asString(params))); 
} 

而 「你的JS-template.js」 可能看起來像:

alert('Hi!, ${parameter1}. My name is ${parameter2}'); 
+0

非常感謝!有效。我使用了一個add(新的WebComponent)並覆蓋了renderHead。 –

0

目前檢票6.x有一個onLoad事件的特定類。沒有更多的需要任何hackish解決方案:

@Override 
public void renderHead(IHeaderResponse response) 
{ 
    super.renderHead(response); 
    response.render(OnLoadHeaderItem.forScript(yourDynamicScript)); 
}