diff --git a/flow-server/src/main/java/com/vaadin/flow/dom/Element.java b/flow-server/src/main/java/com/vaadin/flow/dom/Element.java index 1cafe613a54..e1eb83ecdb9 100644 --- a/flow-server/src/main/java/com/vaadin/flow/dom/Element.java +++ b/flow-server/src/main/java/com/vaadin/flow/dom/Element.java @@ -1634,11 +1634,11 @@ public PendingJavaScriptResult callJsFunction(String functionName, String paramPlaceholderString = IntStream.range(1, arguments.length + 1) .mapToObj(i -> "$" + i).collect(Collectors.joining(",")); // Inject the element as $0 - Serializable[] jsParameters; + Object[] jsParameters; if (arguments.length == 0) { - jsParameters = new Serializable[] { this }; + jsParameters = new Object[] { this }; } else { - jsParameters = new Serializable[arguments.length + 1]; + jsParameters = new Object[arguments.length + 1]; jsParameters[0] = this; System.arraycopy(arguments, 0, jsParameters, 1, arguments.length); } diff --git a/flow-server/src/test/java/com/vaadin/flow/dom/ElementJacksonTest.java b/flow-server/src/test/java/com/vaadin/flow/dom/ElementJacksonTest.java index f099e29e0fb..341b712f8ac 100644 --- a/flow-server/src/test/java/com/vaadin/flow/dom/ElementJacksonTest.java +++ b/flow-server/src/test/java/com/vaadin/flow/dom/ElementJacksonTest.java @@ -2342,6 +2342,18 @@ public void callFunctionTwoParams() { assertPendingJs(ui, "return $0.method($1,$2)", element, "foo", 123); } + @Test + public void callFunctionWithBean() { + UI ui = new MockUI(); + Element element = ElementFactory.createDiv(); + SimpleBean bean = new SimpleBean(); + element.callJsFunction("method", bean); + ui.getElement().appendChild(element); + ui.getInternals().getStateTree().runExecutionsBeforeClientResponse(); + + assertPendingJs(ui, "return $0.method($1)", element, bean); + } + @Test public void callFunctionOnProperty() { UI ui = new MockUI();