cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Johnston <coc...@lojjic.net>
Subject Re: Flowscript run-time error- passing parameters from script to Java
Date Wed, 19 Oct 2005 02:45:00 GMT
David Legg wrote:
> I'm trying to do something in flowscript that must be pretty common.  I 
> simply want to pass a HashMap of arguments from JavaScript to a Java 
> method which will then process the Map to perform some useful business 
> function. Can anyone spot what I'm doing wrong?  I get a Javascript 
> exception (listed at the end of this email).
> 
> I suspect I'm not casting the HashMap properly but my JavaScript is weak 
> in this area.  I think I'm doing something similar to the 'Calling Java' 
> documentation (http://cocoon.apache.org/2.1/userdocs/flow/java.html) but 
> maybe I missed something.
> 
> ++++++++
> My Flowscript looks something like this: -
> 
>  importClass(Packages.com.MySingleton);
> 
>  function main() {
>    var theParams = new java.util.HashMap();
>    theParams.put("param1", "value1");

So here the value for the key param1 is the String "value1"...

>    var usefulObject = MySingleton.doSomethingUseful(theParams);   <== 
> Exception occurs here.
>    cocoon.sendPage("apage.jx", {"useful" : usefulObject} );
>  }
> 
> ++++++++
> My Java method is defined as follows: -
> 
>  public synchronized UsefulObject doSomethingUseful(Map params) {
>    String[] vals = (String[])params.get("param1");

...and here you're expecting the value for the key param1 to be an 
*array* of Strings.  That explains the ClassCastException.

So either you must expect a single String as the value, or set it as a 
String array in the flowscript.  Creating Java arrays in JS is a bit 
odd, you have to use reflection: http://www.mozilla.org/rhino/faq.html

Hope that helps.

>    if (vals == null || vals.length < 1)
>      ...
> 
> ++++++++
> When I access the page I get the following error: -
> 
> java.lang.String
> org.apache.avalon.framework.CascadingRuntimeException: 
> "file:/D:/projects/.../flow/myflowscript.js", line 6: uncaught 
> JavaScript exception: at main 
> (file:/D:/projects/.../flow/myflowscript.js, Line 6): 
> java.lang.ClassCastException: java.lang.String
> 
> cause: java.lang.ClassCastException: java.lang.String
> 
> full exception chain stacktrace[hide]
> 
> org.apache.avalon.framework.CascadingRuntimeException: 
> "file:/D:/projects/.../flow/myflowscript.js", line 6: uncaught 
> JavaScript exception:
> at main (file:/D:/projects/.../flow/myflowscript.js, Line 6):
> java.lang.ClassCastException: java.lang.String
>     at 
> org.apache.cocoon.components.flow.javascript.fom.FOM_JavaScriptInterpreter.callFunction(FOM_JavaScriptInterpreter.java:764)


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message