JAVA/GROOVY中调用脚本引擎的实现方式
2015-12-21 15:23
549 查看
import javax.script.Invocable
import javax.script.ScriptEngine
import javax.script.ScriptEngineManager
// 自带解析文字的方法
private static final String JSMETHOD = "function paperDecode(paperString){var ret='';paperString=unescape(paperString);for(var i=paperString.length;i>0;i--) {ret+=paperString.substr(i-1,1)} return ret}";
// 重写拼装文字的方法
private static final String PASEMETHOD = "function gen(){var tmp=''; for(var n = 0;n<tm.length;n++){tmp+=paperDecode(tm
)} return tmp}";
/**
* 将字符串转换成html对象
* @param result 字符串
* @return 详情页面对象
*/
def genDocTextHtml(result) {
String htmlTmp = "";
lock.lock();
try{
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
result = result.replace("<script language=\"javascript\">", "").replace("</script>", "").replace("document.getElementById('cc').innerHTML=html", "")
.replace("document.getElementById('cc').innerHTML+='. '", "")
.replace("setTimeout(show,100);", "");
engine.eval(JSMETHOD + "\n" + result + "\n" + PASEMETHOD);
if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine;
htmlTmp = (String) invoke.invokeFunction(PASEMETHODNAME);
}
}finally{
lock.unlock();
}
return htmlTmp;
}
import javax.script.ScriptEngine
import javax.script.ScriptEngineManager
// 自带解析文字的方法
private static final String JSMETHOD = "function paperDecode(paperString){var ret='';paperString=unescape(paperString);for(var i=paperString.length;i>0;i--) {ret+=paperString.substr(i-1,1)} return ret}";
// 重写拼装文字的方法
private static final String PASEMETHOD = "function gen(){var tmp=''; for(var n = 0;n<tm.length;n++){tmp+=paperDecode(tm
)} return tmp}";
/**
* 将字符串转换成html对象
* @param result 字符串
* @return 详情页面对象
*/
def genDocTextHtml(result) {
String htmlTmp = "";
lock.lock();
try{
ScriptEngine engine = new ScriptEngineManager().getEngineByName("javascript");
result = result.replace("<script language=\"javascript\">", "").replace("</script>", "").replace("document.getElementById('cc').innerHTML=html", "")
.replace("document.getElementById('cc').innerHTML+='. '", "")
.replace("setTimeout(show,100);", "");
engine.eval(JSMETHOD + "\n" + result + "\n" + PASEMETHOD);
if (engine instanceof Invocable) {
Invocable invoke = (Invocable) engine;
htmlTmp = (String) invoke.invokeFunction(PASEMETHODNAME);
}
}finally{
lock.unlock();
}
return htmlTmp;
}
相关文章推荐
- 08Java语法回顾collection之set集合
- eclipse或Myeclipse中web项目没有run on server
- transient在java中的作用
- Maven在Eclipse中如何配置
- Spring的认识
- Spring事务配置方式(一) 注解方式配置
- spring mvc 不用注入方式,直接获取Service接口方式
- Java基础系列四、面向对象
- Java实现字符数组全排列的方法
- eclipse中debug改变变量的值
- java中传递数组的写法
- Myeclipse学习总结(6)——MyEclipse断点调试
- MyEclipse断点调试
- Java中char数组(字符数组)与字符串String类型的转换方法
- spring事务声明的几种传播特性
- Java基础系列三、数组
- Java 加载Properties文件的六种方式
- ubuntu下优雅地切换java版本
- Java基础系列二、代码结构+函数
- Java编程之jdk1.4,jdk1.5和jdk1.6的区别分析(经典)