通过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取得iframe中元素的几种方法
Jul 04 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
Feb 11 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
浅谈$('div a') 与$('div&gt;a')的区别
Jul 18 Javascript
jquery删除table当前行的实例代码
Oct 07 Javascript
webpack教程之webpack.config.js配置文件
Jul 05 Javascript
vue项目中应用ueditor自定义上传按钮功能
Apr 27 Javascript
js实现通过开始结束控制的计时器
Feb 25 Javascript
通过说明与示例了解js五种设计模式
Jun 17 Javascript
localstorage实现带过期时间的缓存功能
Jun 28 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
Aug 27 Javascript
Vue3 实现双盒子定位Overlay的示例
Dec 22 Vue.js
用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
PHP设计模式之外观模式(Facade)入门与应用详解
2019/12/13 PHP
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
2019/12/16 Javascript
原生js实现的金山打字小游戏(实例代码详解)
2020/03/16 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
[41:11]完美世界DOTA2联赛PWL S2 Inki vs Magma 第一场 11.22
2020/11/24 DOTA
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
python单例模式实例解析
2018/08/28 Python
python读取txt文件并取其某一列数据的示例
2019/02/19 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
python的sorted用法详解
2019/06/25 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
Zavvi美国:英国娱乐之家
2017/03/19 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
财务会计专业求职信范文
2013/12/31 职场文书
规范化管理年活动总结
2014/08/29 职场文书
殡葬服务心得体会
2014/09/11 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
驻村工作简报
2015/07/20 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
Oracle 死锁的检测查询及处理
2021/09/25 Oracle