通过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 相关文章推荐
List Installed Hot Fixes
Jun 12 Javascript
ExtJS 2.0实用简明教程 之Ext类库简介
Apr 29 Javascript
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
js和css写一个可以自动隐藏的悬浮框
Mar 05 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
May 12 Javascript
JQuery中serialize()用法实例分析
Feb 06 Javascript
JS实现鼠标滑过显示边框的菜单效果
Sep 21 Javascript
JavaScript基本语法_动力节点Java学院整理
Jun 26 Javascript
使用Vue自定义数字键盘组件(体验度极好)
Dec 19 Javascript
vue构建动态表单的方法示例
Sep 22 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 jQuery
用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摘要生成函数(无乱码)
2012/02/04 PHP
基于PHP常用函数的用法详解
2013/05/10 PHP
php 地区分类排序算法
2013/07/01 PHP
PHP实现的简易版图片相似度比较
2015/01/07 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
JQuery 无废话系列教程(二) jquery实战篇上
2009/06/23 Javascript
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
jQuery制作简洁的图片轮播效果
2015/04/03 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
Vue和React组件之间的传值方式详解
2019/01/31 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
Python随机生成数据后插入到PostgreSQL
2016/07/28 Python
Python正则表达式常用函数总结
2017/06/24 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
python多线程同步实例教程
2019/08/11 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
应届毕业生求职信
2013/11/30 职场文书
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
怎样写演讲稿
2014/01/04 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
财务工作检讨书
2014/10/29 职场文书
网络研修随笔感言
2015/11/18 职场文书
幼儿园小班开学寄语(2016秋季)
2015/12/03 职场文书