I'm trying to interact between Vaadin and amcharts. Basically I need to draw a map using amcharts libraries, and when I click on the map I need to send back information about the click to Java. My problem is that I can't figure out how to properly interact between the two, with the documentation showing very simple examples.
In the vaadin docs it shows an example like:
getElement().executeJS("jsMethodName($0)", getElement());
and then to send back data to Java:
element.$server.javaMethodName(args);
My problem is that I can send from Java to JS correctly, and the element is loaded correctly. But when I do element.$server.javaMethodName(), element.$server is always undefined. I don't understand if I'm missing something or if I dind't understand the correct way to use this.
This is my Java method:
@ClientCallable
private void clickBullet(String area) {
log.error("Clicked area: " + area);
}
and this is the call from JS:
function clickBullet(name, element) {
if(element !== null){
element.$server.clickBullet(name);
}
else {
console.log("element is null");
}
}
Note that element is not null, it is correct. What am I doing wrong?
elementis something else than what you expect it to be? You can adddebugger;at your JS function and it will stop at a breakpoint there automatically.executeJSmust be the same that you pass as an argument. Otherwise I guess you wouldn't be able to find the Java function (?). I don't know.getElement().executeJs("myElement = $0;", getElement());and then use the variablemyElementin theelement.$servercode. I'm sorry I can't be more useful, I really don't remember exactly what it was.