java8使用nashorn与javascript直接交互

本文介绍了如何在Java 8中利用Nashorn引擎与JavaScript进行直接交互。通过创建一个Java类并将其实例暴露给JavaScript脚本,展示了JavaScript能够访问和修改Java对象的属性,包括列表。这种方法允许在Java应用中动态执行JavaScript计算脚本,例如用于用户自定义的绩效工资计算规则,从而避免硬编码复杂逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



class C(){

public String getS1(){

   return _s1;

}

public String getS2(){

  return _s2;

}


public void setS1(String s){

  _s1=s;

}

public void setS2(String s){

  _s2=s;

}

//javascript可以直接for操作java中的list

public List<String> list=Arrays.asList("111","222","333");


}


//java8下才能编译

ScriptEngineManager scriptEngineManager =  new ScriptEngineManager();
ScriptEngine nashorn = scriptEngineManager.getEngineByName("nashorn"); 

//生成一个java对象,用于与javascript脚本交户  

        C cc=new C();
          cc.s1="java set s1";
          cc.setS2("java set s2");
          //将cc对象暴露给脚本
          SimpleBindings simpleBindings = new SimpleBindings();
          simpleBindings.put("cc", cc);

          //执行脚本
         nashorn.eval("print('cc.s1='+cc.getS1());for(var i in cc.list) print(i+'='+a[i]);cc.setS2('js set')",simpleBindings);

         System.out.println("cc.s2="+cc.getS2());


输出:

cc.s1=java set s1

0=111

1=222

3=333

cc.s2=js set


也就是很容易通过binding将java中的对象引入js的上下文,js可以随意操纵java的对象.


可以将一些计算类脚本用js来写,然后在java中动态执行.


典型的比如一个计算绩效工资的模块,可以让每个用户自己通过js脚本来实现复杂规则,而无需统一编码了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值