通过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 相关文章推荐
javascript 设置某DIV区域内的checkbox复选框
Nov 30 Javascript
使用 Node.js 做 Function Test实现方法
Oct 25 Javascript
jquery ajaxSubmit 异步提交的简单实现
Feb 28 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
Aug 24 Javascript
AngularJS 实现弹性盒子布局的方法
Aug 30 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
Sep 03 Javascript
基于axios 解决跨域cookie丢失的问题
Sep 26 Javascript
详解element-ui设置下拉选择切换必填和非必填
Jun 17 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
Jul 10 Javascript
微信小程序新闻网站详情页实例代码
Jan 10 Javascript
如何阻止移动端浏览器点击图片浏览
Aug 29 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
Jan 26 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
如何在PHP中使用Oracle数据库(3)
2006/10/09 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
解析php取整的几种方式
2013/06/25 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
javascript实现获取服务器时间
2015/05/19 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
js实现表格筛选功能
2017/01/18 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
原生JavaScript来实现对dom元素class的操作方法(推荐)
2017/08/16 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
Python的装饰器用法学习笔记
2016/06/24 Python
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
Python super()函数使用及多重继承
2020/05/06 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
会计专业毕业生推荐信
2013/11/05 职场文书
外国人聘用意向书
2014/04/01 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
写给导师的自荐信
2015/03/06 职场文书
公司酒会致辞
2015/07/30 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书