通过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 相关文章推荐
js 新浪的一个图片播放图片轮换效果代码
Jul 15 Javascript
基于jquery的图片的切换(以数字的形式)
Feb 14 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
Apr 26 Javascript
提取jquery的ready()方法单独使用示例
Mar 25 Javascript
AngularJS模块学习之Anchor Scroll
Jan 19 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
Jan 03 Javascript
js使用i18n实现页面国际化的方法
May 09 Javascript
javascript兼容性(实例讲解)
Aug 15 Javascript
详细介绍RxJS在Angular中的应用
Sep 23 Javascript
webpack4的迁移的使用方法
May 25 Javascript
详解Node.js异步处理的各种写法
Jun 09 Javascript
微信小程序实现图片选择并预览功能
Jul 25 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
Syphon 使用方法
2021/03/03 冲泡冲煮
PHP生成随机字符串(3种方法)
2015/09/25 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
PHP7 其他修改
2021/03/09 PHP
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
jquery轻量级数字动画插件countUp.js使用详解
2019/10/17 jQuery
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
Python函数中定义参数的四种方式
2014/11/30 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
python 队列详解及实例代码
2016/10/18 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
社区服务活动总结
2014/05/07 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
个人自我剖析材料
2014/09/30 职场文书
介绍长城的导游词
2015/01/30 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
Python使用OpenCV实现虚拟缩放效果
2022/02/28 Python
redis lua限流算法实现示例
2022/07/15 Redis