如何从JavaScript代码调用EclipseRCP透视图(Java类方法)?
我想从JavaScript函数调用或打开透视图(或视图) 我有一个EclipseRCP应用程序,其中嵌入了我的HTML页面。在HTML页面上单击按钮,我想打开EclipseRCP透视图或视图 我已经从javascript函数中尝试了如下所示如何从JavaScript代码调用EclipseRCP透视图(Java类方法)?,javascript,java,html,eclipse-rcp,Javascript,Java,Html,Eclipse Rcp,我想从JavaScript函数调用或打开透视图(或视图) 我有一个EclipseRCP应用程序,其中嵌入了我的HTML页面。在HTML页面上单击按钮,我想打开EclipseRCP透视图或视图 我已经从javascript函数中尝试了如下所示 function populateGeometryData(){ alert('Inside populateGeometryData() function !!!!!'); var geoMetryDataClass = Java.type("com.te
function populateGeometryData(){
alert('Inside populateGeometryData() function !!!!!');
var geoMetryDataClass = Java.type("com.test.app.ui.view.PageView");
geoMetryDataClass.populateGemetryData("TestVal");
}
其中PageView是我的观点之一。但我得到了“未捕获引用错误:未定义Java”。我认为,这个错误是因为Chrome不再支持NPAPI(Java小程序所需的技术)。那么,还有其他方法可以从JavaScript调用Java类方法吗 下面是如何从EclipseRCP代码启动HTML页面的
@Override
public void createPartControl(Composite parent) {
String user = ExecuteRestService.getLoggedInUser();
System.out.println("Login User "+user);
String html = "/Pages/index.html";
Bundle appBundle = FrameworkUtil.getBundle(this.getClass());
if(appBundle == null) {
System.out.println("bundle is null");
return;
}
URL url = FileLocator.find(appBundle, new Path(html), null);
try {
url = FileLocator.toFileURL(url);
} catch (IOException e) {
// TODO Auto-generated catch block@*
e.printStackTrace();
}
Browser browser = new Browser(parent, SWT.None);
String urlVal = url.toString()+"?LoginUser="+user;
browser.setUrl(urlVal);
}
我正在寻找一些关于调用Java类方法或从JavaScript函数调用EclipseRCP透视图的建议。
先谢谢你
更新
正如注释部分所建议的那样,如果您使用SWT浏览器启动HTML页面,那么使用“BrowserFunction”我们可以从javascript调用Eclipse RCP中的Java类方法
new BrowserFunction(browser, "populateGeometricData")
{
@Override
public Object function(Object[] objects)
{
if(objects.length == 0) {
System.out.println(" array is zero");
}else {
System.out.println("Call from Javascript"
+ objects.length);
System.out.println("Request Id "+ objects[0]);
}
return null;
}
};
HTML是在RCP的SWT浏览器中运行还是在普通浏览器中运行?您好,Greg,HTML是在RCP的SWT浏览器中运行的。然后使用
BrowserFunction
-请参见Greg,我使用了BrowserFunction,我观察到的是,它调用java类方法,但javascript函数中的代码没有调用,甚至没有发出警报。除了从javascript函数调用javamethod外,我还需要传递参数。我想在java方法中使用这些参数值。这可能吗?对不起,我不明白你在说什么。BrowserFunction用于从浏览器中的Javascript代码调用Java方法。答案中的链接详细解释了这一点。