
<script type="text/javascript">
// 这里放置数组
var array = new Array();
<% String[] params = (String[])requestgetSession()getAttribute("您的存入key");
for(int i = 0; i < paramslength; i++){%>
arraypush(<%=params[i]%>);
<%}%>
</script>
>
有时候因为需要,我们想在Java中调用js方法,不再是像页面中一个事件触发,该如何做到呢?今天下午没事得时候小研究了下,现跟大家分享一下。不对之处,望大家指正,共同进步!
[java] view plain copy
/
加载脚本引擎,并在java中调用js方法
/
public void test2()
{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = managergetEngineByName("JavaScript");
try {
String str="2&1";
Double d = (Double) engineeval(str);
Integer i=dintValue();
Systemoutprintln(i);
} catch (ScriptException ex) {
exprintStackTrace();
}
}
[java] view plain copy
/
在java中调用js,jdk16中有加载js引擎类,然后由它来调用js方法。
并通过JDK平台给script的方法中的形参赋值
/
public void test(String name)
{
ScriptEngineManager sem = new ScriptEngineManager();
/
semgetEngineByExtension(String extension)参数为js
semgetEngineByMimeType(String mimeType) 参数为application/javascript 或者text/javascript
semgetEngineByName(String shortName)参数为js或javascript或JavaScript
/
ScriptEngine se = semgetEngineByName("js");
try
{
String script = "function say(){ return 'hello,'"+name+"; }";
seeval(script);
Invocable inv2 = (Invocable) se;
String res=(String)inv2invokeFunction("say",name);
Systemoutprintln(res);
}
catch(Exception e)
{
eprintStackTrace();
}
}
[java] view plain copy
/
演示如何将java中对象作为js中全局变量,同时演示将file类赋给脚本语言,并获得其属性。
/
public void testScriptVariables()
{
ScriptEngineManager sem=new ScriptEngineManager();
ScriptEngine engine=semgetEngineByName("js");
File file=new File("c://1txt");
engineput("f", file);
try {
engineeval("println('path:'+fgetPath())");//无法使用alert方法
} catch (ScriptException e) {
eprintStackTrace();
}
}
[java] view plain copy
/
演示如何在java中如何通过线程来启动一个js方法
/
public void testScriptInterface() throws ScriptException
{
ScriptEngineManager sem=new ScriptEngineManager();
ScriptEngine engine=semgetEngineByName("js");
String script="var obj=new Object();objrun=function(){println('test thread')}";
engineeval(script);
Object obj=engineget("obj");//获取js中对象
Invocable inv=(Invocable)engine;
Runnable r=invgetInterface(obj,Runnableclass);
Thread t=new Thread(r);
tstart();
}
这样java就可以执行动态语言了,不过注意是jdk16版本的哦~
这样写不知道你能不能看懂,这个问题远标java就已经讲过这个题目了,希望能帮到你!
页面中的java代码无法获得js中的变量,因为在页面渲染的时候,首先执行的是java代码,编译完成后生成html页面反馈给用户。这时页面只剩下js代码和html代码了。
详细参考jsp的编译过程:>
以上就是关于在js文件中怎么获得java方法返回的值全部的内容,包括:在js文件中怎么获得java方法返回的值、java脚本怎么获取js中的值、如何在java中调用js方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)