public String runScript(String js, String functionName, Object[] functionParams) {
Context rhino = Context.enter();
rhino.setOptimizationLevel(-1);
try {
Scriptable scope = rhino.initStandardObjects();
ScriptableObject.putProperty(scope, "javaContext", Context.javaToJS(UserInfoSetFrag.this, scope));
ScriptableObject.putProperty(scope, "javaLoader", Context.javaToJS(UserInfoSetFrag.class.getClassLoader(), scope));
rhino.evaluateString(scope, js, "UserInfoSetFrag", 1, null);
Function function = (Function) scope.get(functionName, scope);
Object result = function.call(rhino, scope, scope, functionParams);
if (result instanceof String) {
return (String) result;
} else if (result instanceof NativeJavaObject) {
return (String) ((NativeJavaObject) result).getDefaultValue(String.class);
} else if (result instanceof NativeObject) {
return (String) ((NativeObject) result).getDefaultValue(String.class);
}
return result.toString();
} finally {
Context.exit();
}
}
//matchStr是一個字符串,js方法代碼字符串
String result = runScript("vara=\"" + matchStr + "\";eval_r(decodeURI(a));", "ruleOfStudent", new Object[]{text, grade, false});
if("false".equals(result))
{
showOtherCheckerDialog();
return false;
}
Java環境下調Js方法
參考:http://blog.csdn.net/szwangdf/article/details/25376415
1,首先下載jar:http://www.mozilla.org/rhino/
2,例子:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.