2012-04-10 3 views
0

RhinoScriptEngine에서 제 3 자 자바 스크립트 파일을 실행 중입니다. 이 파일에는 "this"에있는 메소드에 대한 참조가 들어 있습니다. 즉 this.getField. 이 파일은 "this"가 js Window 객체가 아닌 다른 객체라는 기대로 작성됩니다. 나는 "이"입니다 객체를 변경하는 방법, 자바의 ScriptEngine (코뿔소)를 사용하여 객체의 기능 getField를 찾을 수 없습니다 RhinoScriptEngine을 사용하여 "this"라는 javascript 키워드를 어떻게 변경합니까?

는 [글로벌 오브젝트]

: 그래서 지금은 스크립트를 실행할 때이 오류를 받고 있어요 참조? 감사!

일반적으로 나는 scriptEngine.eval (script)와 같은 것을 호출 할 수 있습니다. 이것은 일부 전역 "this"객체에 대한 참조가없는 한 훌륭하게 작동합니다. 나는 비슷한 것을하고 싶지만, "이것이"무엇인지 정의 할 수 있습니다.

+0

웹 브라우저에는 '.call'이 있는데, Rhino에서 같은지 확실하지 않습니다. –

+1

[이 답변] (http://stackoverflow.com/a/6709811/1106925) 도움이 되셨습니까? –

+1

[Rhino : 자바 객체를 스크립트로 전달하는 방법, "this"로 참조 할 수있는 방법 (http://stackoverflow.com/questions/6709542/rhino-how-to-pass-java-object-to) -script-where-be-be-this-this-referenced-as-this) –

답변

1

나는이 대답은 나중에 삼년 이상 알고 있지만, 사람이 다음 코드는 나를 위해 일한 솔루션을 찾고 해당 페이지로 그들의 방법을 찾은 경우 :

ScriptEngineManager factory = new ScriptEngineManager(); 
ScriptEngine engine = factory.getEngineByName("JavaScript"); //Your Engine Name 
engine.put("this", theObject); 

지금 this를 참조하면 원하는 개체에 액세스 할 수 있습니다.

+0

나를 위해 작동하지 않습니다 (Java 8). 'engine.eval ("this");'항상 [object global]'을 산출합니다. 할 수없는 것 같네요. –