2013-07-30 4 views
2

호출 Java 코드에 여러 값을 반환하도록 Java에 포함 된 일부 Javascript 코드를 수정하려고합니다. (자바 스크립트로 호출을)Rhino에서 Java 호출 클래스로 여러 값 반환

자바 코드 (자바에 의해 호출)

... 
Object result = execFunc.call(context, scope, scope, execArgs); 
return ScriptRuntime.toString(result); 

자바 스크립트 코드 :

... 
return "string"; 

는 여러 개의 값을 반환 기대하고있다.

내가 지금처럼의 HashMap를 반환하는 자바 스크립트를 수정 시도했다 :

... 
var res = new java.util.HashMap(); 
res.put("String", "string"); 
res.put("Integer", 1); 
return res; 

그러나 나는 자바 측에서 캐스팅 할 때 나는 ClassCastException이 얻을 :에

... 
HashMap result = (HashMap) execFunc.call(context, scope, scope, execArgs); 
return ScriptRuntime.toString(result); 

결과 :

java.lang.ClassCastException: org.mozilla.javascript.NativeJavaObject cannot be cast to java.util.HashMap 

나는 HashMap에서 그것을 반환하지 않습니다. 반환하려는 값은 String 및 Integer입니다. 이상하게도 튜플이나 HashMap을 반환하려고하지만 배열에 두 개의 문자열을 반환하고 Integer를 구문 분석하면됩니다.

여러 값을 반환하기위한 지침은 크게 감사하겠습니다.

대신 자바 측에서 채울 수있는 자바 객체를 주입해야합니까?

답변

1

NativeJavaObject njo = (NativeJavaObject) execFunc.call(context, scope, scope, execArgs); 
Map map = (Map) njo.unwrap(); 
시도