Hi guys.
What I am trying to do seems simple enough. We have a vaadin application integrated into a Spring MVC/tiles framework. Somehow, I need to ‘poke’ the vaadin UI externally in order to get it to do something.
Looking at the Book of Vaadin, the solution seemed simple enough - add a javascript callback function via the server code, and then call this function from javascript on the client.
Armed with this information, I tried the following:
- In my UI.init() method, I added the following code:
JavaScript.getCurrent().addFunction("pluginSwitch",
new JavaScriptFunction()
{
@Override
public void call(JSONArray arguments) throws JSONException
{
System.out.println("EMIngEstate2UI.init(...).new JavaScriptFunction() {...}.call()");
Notification.show("Received call from javascript");
}
});
- In the javascript for the web page housing the UI, I added the following code (Note that the javascript already contained logic for starting the embedded UI - I simply added the call to the new function at the bottom) :
<script type="text/javascript">//<![CDATA[
if (!window.vaadin)
alert("Failed to load the bootstrap JavaScript: "+
"VAADIN/vaadinBootstrap.js");
/* The UI Configuration */
vaadin.initApplication("ingestate2UI", {
"browserDetailsUrl": "/emgui/legacy2/",
"serviceUrl": "/emgui/legacy2/",
"widgetset": "com.ingenico.webmmicore.vaadin.widgetset.IngEstateAppWidgetSet",
"theme": "ingenicotheme",
"versionInfo": {"vaadinVersion": "7.3.9"},
"vaadinDir": "/emgui/VAADIN/",
"heartbeatInterval": 120,
"debug": true,
"standalone": false,
"authErrMsg": {
"message": "Take note of any unsaved data, "+
"and <u>click here<\/u> to continue.",
"caption": "Authentication problem"
},
"comErrMsg": {
"message": "Take note of any unsaved data, "+
"and <u>click here<\/u> to continue.",
"caption": "Communication problem"
},
"sessExpMsg": {
"message": "Take note of any unsaved data, "+
"and <u>click here<\/u> to continue.",
"caption": "Session Expired"
}
});
/* Call to javascript callback function created directly in vaadin UI initialisation*/
/* This will force the plugin switch */
window.pluginSwitch("TEST");
//]] >
</script>
Alas, it doesnt work.
When I ‘view page source’ for the loaded UI, I cannot see any javascript method called “pluginSwitch” which I assume should have been added during the UI initialisation.
Does anybody have any ideas what I am doing wrong? Using Vaadin 7.3.9 by the way.
All help greatly appreciated.
Cheers,
Lee.