通过Kettle自定义jar包供javascript使用


Posted in Javascript onJanuary 29, 2020

这篇文章主要介绍了通过Kettle自定义jar包供javascript使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

我们都知道 Kettle 是用 Java 语言开发,并且可以在 JavaScript 里面直接调用 java 类方法。所以有些时候,我们可以自定义一些方法,来供 JavaScript 使用。

一、在 java 项目中创建工具类

在项目中,创建 utils 工具类,比如 计算总页码 的一个方法。代码如下:

public class PaginationUtils {

 /**
  * 计算得到总页码
  * @param totalRecords 总记录数
  * @param pageSize 分页大小
  * @return 总页码
  */
 public static int totalPage(String totalRecords,String pageSize){
  int totalPage=0;
  try{
   BigDecimal records=new BigDecimal(totalRecords);
   BigDecimal size=new BigDecimal(pageSize);
   BigDecimal _tmp=records.add(size).subtract(new BigDecimal(1));
   BigDecimal _tp=_tmp.divide(size).setScale(0,BigDecimal.ROUND_HALF_UP);
   totalPage=_tp.intValue();
  }catch (Exception e){
   //error
  }
  return totalPage;
 }
}

二、部署打包

工具类方法开发完毕后,可通过 mvn clean package -DskipTests 命令进行打包,在 target 目录下,会生成一个 jar 文件。需要将这个 jar 包放到 kettle 的 lib 目录下。如下图所示:

通过Kettle自定义jar包供javascript使用

三、编写 JavaScript 脚本

重启 Kettle ,新建 JavaScript 脚本,计算总页码的 js 代码如下所示:

//计算总页码
var totalPage=com.study.spring.Utils.PaginationUtils.totalPage(countBySql,pageSize);

其实就是在 js 代码中声明 java 类+方法。

但是问题来了,kettle 在运行这段 JavaScript 脚本的时候,提示下面这样的错误:

不能编译 javascript: org.mozilla.javascript.EcmaError: TypeError: Cannot call property totalPage in object [JavaPackage com.study.spring.Utils.PaginationUtils]. It is not a function, it is "object". (<cmd>#22)

根据错误信息来看,其实还是没有找到相关类方法,和没放这个 jar 包一样...

四、FAQ

上面这个错误究竟是怎么回事呢?我也很奇怪。于是我就用压缩工具也看了看 lib 目录下的其它 jar 包结构,发现人家都是这样式的:

通过Kettle自定义jar包供javascript使用

而我刚才打的 jar 包目录是这样子的:

通过Kettle自定义jar包供javascript使用

com 目录并没有在 jar 包的根路径下,自然是访问不到那个方法。

好,问题产生的原因找到了,然后再说一下解决办法:

在 pom.xml 文件中添加:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
        <skip>true</skip>
      </configuration>
    </plugin>
  </plugins>
</build>

pom 文件添加后的效果图如下所示:

通过Kettle自定义jar包供javascript使用

再次打成的 jar 包内部结构为:

通过Kettle自定义jar包供javascript使用

成功!com 目录已经在 jar 包的根路径下了。

将 jar 包替换到 kettle 的 lib 目录下,重启 Kettle ,再次通过 javascripts 调用自定义 jar 包成功!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jquery的direction图片渐变动画效果
May 24 Javascript
原生javascript实现图片弹窗交互效果
Jan 12 Javascript
js实现键盘Enter键提交表单的方法
May 27 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
Nov 15 Javascript
JavaScript实现打开链接页面的方式汇总
Jun 02 Javascript
详解vue.js下引入百度地图jsApi的两种方法
Jul 27 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
Dec 31 Javascript
bootstrap实现嵌套模态框的实例代码
Jan 10 Javascript
JavaScript鼠标悬停事件用法解析
May 15 Javascript
详解element-ui动态限定的日期范围选择器代码片段
Jul 03 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 Javascript
JavaScript中时间格式化新思路toLocaleString()
Nov 07 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
Dec 24 #Javascript
vue引用外部JS的两种种方法
Jan 28 #Javascript
Java Varargs 可变参数用法详解
Jan 28 #Javascript
关于引入vue.js 文件的知识点总结
Jan 28 #Javascript
JS简单表单验证功能完整示例
Jan 26 #Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
Jan 26 #Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
Jan 26 #Javascript
You might like
YII中assets的使用示例
2014/07/31 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
2019/10/21 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
基于jQuery的自动完成插件
2011/02/03 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
jQuery+ajax实现动态执行脚本的方法
2015/01/27 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
nodejs socket实现的服务端和客户端功能示例
2017/06/02 NodeJs
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
[02:34]2016完美“圣”典风云人物:BurNIng专访
2016/12/10 DOTA
python之import机制详解
2014/07/03 Python
Python学习小技巧之列表项的拼接
2017/05/20 Python
Python3实现对列表按元组指定列进行排序的方法分析
2018/12/22 Python
ipython和python区别详解
2019/06/26 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
法国隐形眼镜网站:VisionDirect.fr
2020/03/03 全球购物
个人求职简历的自我评价
2013/10/19 职场文书
自我鉴定注意事项
2014/01/19 职场文书
幼儿园大班毕业感言
2014/02/06 职场文书
研修第一天随笔感言
2014/02/15 职场文书
个人函授自我鉴定
2014/03/25 职场文书
班长竞选演讲稿
2014/04/24 职场文书
2014年连锁店圣诞节活动方案
2014/12/09 职场文书
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python