【发布时间】:2013-04-25 09:31:55
【问题描述】:
我正在使用 JSNI 从 gwt 客户端调用 javascript 函数,如下所示:
anchor.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
execute(notification.getActionCode(), notification.getParams());
}
});
private static native String execute(String functionName, String params)/*-{
try{
$wnd[functionName](params);
}catch(e){
alert(e.message);
}
}-*/;
我的问题是我的 javascript 函数包含 window.open("ServletName?....")。 单击锚点时,打开的窗口出现以下错误: 请求的资源 (/es/gwt/core/ServletName) 不可用。
如果我用 window.open("../../ServletName?....") 替换 window.open("ServletName?...."),窗口打开成功,但是这些 javascript 函数是在 gwt 之外也使用过,所以我不能修改它。
我不知道为什么将 /gwt/core 部分添加到导致问题的 url。 在执行 javascript 函数之前,gwt 中是否有办法提取其内容并在 url 之前添加“../..”? 我的意思是增加 javascript 函数名称,我们可以在调用执行函数之前获取它的内容吗?就我而言,我的 javascript 函数如下:
function everlinked_AddSpace(spaceId){
window.open('ELUtilities?Service=Space&action=homePage&SpaceId='+spaceId+'&Template=apps/everlinked/templates/spaces/space_main.htm','_blank');;
}
我需要在 gwt 客户端修改它并使用新的修改调用它。
如果有人可以帮助我,我将不胜感激。
【问题讨论】:
-
我更新了我的帖子。我希望它更清楚。我不知道这是否是正确的解决方案。如果您有更好的解决方案,我将不胜感激。
-
感谢 Baadshah 的帮助。但我应该在哪里使用方法 getHostPageBaseURL()
-
我的jsni方法是包含要修改的url的方法。如果我通过 GWT.get...URL() 获取基本 url,我如何将它包含在我的 jnsi 方法中?
-
要么将其作为方法的参数传递,要么使用 JSNI 语法从 JS 调用它:
@com.google.gwt.core.client.GWT::getHostPageBaseURL()。