如何在Vaadin中添加返回值的JavaScript函数?

时间:2016-12-06 06:38:21

标签: javascript java vaadin vaadin7

在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());
    }
});

是否有可能注册一个具有返回值的函数?

2 个答案:

答案 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