在Vaadin中,可以注册一个JavaScript函数,例如:
JavaScript.getCurrent().addFunction("openObj", new JavaScriptFunction() {
private static final long serialVersionUID = 9167665131183664686L;
@Override
public void call(JsonArray arguments) {
if (arguments.length() != 1) {
Notification.show("Wrong arguments for openObj: " + arguments.asString());
return;
}
openObject(arguments.get(0).asString());
}
});
是否有可能注册一个具有返回值的函数?
答案 0 :(得分:3)
你可以通过回调另一个JavaScript方法来解决这个问题。
ClassName.MemberName
然后在你的JS中调用openObj函数时可能看起来像这样:
JavaScript.getCurrent().addFunction("openObj", new JavaScriptFunction() {
private static final long serialVersionUID = 9167665131183664686L;
@Override
public void call(JsonArray arguments) {
if (arguments.length() != 1) {
Notification.show("Wrong arguments for openObj: " + arguments.asString());
return;
}
String val = openObject(arguments.get(0).asString());
JavaScript.getCurrent().execute("myMethod('" + val + "');");
}
});
答案 1 :(得分:0)
这是JavaScriptFunction#call(JsonArray)方法的JavaDoc,它解释了你不能有一个返回值:
sys.js