【发布时间】:2023-02-15 20:41:08
【问题描述】:
我在我的 Vaadin 项目中实施了 Shepherd,因此我可以通过我的 Web 应用程序指导用户游览。 但是,我需要从 Vaadin 的手风琴组件上的 javascript 获得访问权限,以打开或关闭特定的选项卡。为此,我需要访问 Accordion 组件的 open() 和 close() 方法。那么我如何通过 Javascript 访问它们呢?
已经在他们的网站上看到教程: Vaadin calling java from javascript, 但遗憾的是,那里什么都没有,有什么可以帮助我的。 我已经尝试过使用这样的东西:
UI.getCurrent().getPage().executeJs("window.startTour($0, $1)", this, Accordion1.getElement());
但是当我尝试通过以下方式在javascript中绑定它时:
window.startTour = (element, accordion) => { ... }
并在此窗口中:
beforeShowPromise: function () {
return new Promise(function(resolve) {
element.$server.openAccordion(accordion.$server, 1);
resolve();
});
},
在java中使用以下方法:
@SuppressWarnings("unused")
@ClientCallable
public void openAccordion(Object object, int index) {
Accordion accordion = (Accordion) object.get(this);
accordion.open(index);
}
我只收到以下错误消息:
类“...”具有方法“openAccordion”,其参数 0 指的是不受支持的类型“java.lang.Object”
无论我将什么用作第一个参数,扩展 Object 的所有内容都不起作用,我不知道为什么。
我发现了一个最近的帖子有同样的问题,但它对我没有帮助: Unable to send a new bean instance to the server
我在我的项目中使用 Intellij:Java、Spring、Vaadin 和 Shepherd
已经尝试使用不同的参数,但只有 int 参数有效,Object 无效。 问题是,由于这个错误,我无法通过 Java 从 Javascript 更改 Accordion 打开的选项卡,所以我必须为每个 Accordion 2 方法实现打开和关闭它。
也许有人可以帮助我或者知道一些技巧来掌握它。 谢谢
【问题讨论】:
标签: javascript spring vaadin client-server illegalargumentexception