JavaコードからJavaScript関数を呼び出そうとしています。次のように私のコードは次のとおりです。Javaコードスロー例外のJavaScript
11:53:50,847 ERROR [Login] javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "jQuery" is not defined. (#1) in at line number 1 11:53:50,847 ERROR [Login] Throwing error in the catch part 11:53:50,848 INFO [Login] invoking function 11:53:50,848 ERROR [STDERR] java.lang.NoSuchMethodException: no such method: displayDataCapturePopUp(301,1373864,0);
が、私は多くのことを試みたが、まだこれを取り除くことはできません。私はこのコードを実行すると
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
String script = baseUrl + "UIConfigurator/includes/js/DataCaptureFramework.js";
try {
LOGGER.info("evaluating engine");
LOGGER.info(script);
URL url1 = new URL(script);
LOGGER.info("url1 "+url1.getPath()+url1);
BufferedReader in = new BufferedReader(
new InputStreamReader(url1.openStream()));
String inputLine = null;
StringBuffer buffer = new StringBuffer();
while ((inputLine = in.readLine()) != null)
buffer.append(inputLine);
LOGGER.info(buffer.toString());
engine.eval(buffer.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
LOGGER.error(e.toString());
LOGGER.error("Throwing error in the catch part");
}
Invocable inv = (Invocable) engine;
try {
LOGGER.info("invoking function");
inv.invokeFunction("displayDataCapturePopUp("+user.getOrgId()+","+user.getId()+","+session.getLoginType()+");");
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ScriptException e) {
// TODO Auto-generated catch block
LOGGER.error("throwing error in catch block of invoking engine and function");
}
それは私に、次のエラーが発生します。私が間違っていることを教えてください。 JavaScriptから以下の関数を呼び出そうとしています。
function displayDataCapturePopUp(orgId,userId,loginTypeId){ jQuery(" <link/>", {rel: "stylesheet",type: "text/css",href:
"/UIConfigurator/includes/css/librarycss/jquery-ui.min.css"}).appendTo("head"); jQuery("<link/>", {rel: "stylesheet",type: "text/css",href:
"/UIConfigurator/includes/css/DataCaptureFramework.css"}).appendTo("head"); jQuery("<link/>", {rel: "stylesheet",type: "text/css",href:
"/UIConfigurator/includes/css/librarycss/tooltipster.css"}).appendTo("head"); jQuery("<link/>", {rel: "stylesheet",type: "text/css",href:
"/UIConfigurator/includes/css/librarycss/jquery.alerts.css"}).appendTo("head");
jQuery.getScript('/UIConfigurator/includes/js/UiAjaxInteraction.js',function() {
jQuery.getScript('/iONjsLib/js/jquery-ui-1.10.4.min.js',function() {
jQuery.getScript('/iONjsLib/js/jquery.tooltipster.min.js',function() {
jQuery.getScript('/UIConfigurator/includes/js/libraryjs/jquery.alerts.js',function() {
jQuery.getScript('/iONjsLib/js/jquery.blockUI.js',function() {
getDataCapturePopUpDetails(orgId,userId,loginTypeId); }
);
}
);
}
);
}
);
}
);
}
助けを求めるときは、コードを読みやすくしてください。 –
あなたが呼び出しようとしているJavaScript関数はJQueryに依存しており、JQueryを利用できるようにしていないので失敗します。 – yole
「jQuery」は利用できません。あなたは 'jQuery'は標準のJavascriptの一部ではないことを知っていますか?あなたはその定義をスクリプトに含めましたか? – RealSkeptic