通过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 读后台cookie代码
Sep 15 Javascript
js 页面执行时间计算代码
Mar 04 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
Dec 04 Javascript
二叉树先序遍历的非递归算法具体实现
Jan 09 Javascript
web前端设计师们常用的jQuery特效插件汇总
Dec 07 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
Dec 09 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
Jun 12 Javascript
JS引用传递与值传递的区别与用法分析
Jun 01 Javascript
vue+django实现一对一聊天功能的实例代码
Jul 17 Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 Javascript
Node.js web 应用如何封装到Docker容器中
Sep 01 Javascript
OpenLayers3实现鼠标移动显示坐标
Sep 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
php错误级别的设置方法
2013/06/17 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
JQuery toggle使用分析
2009/11/16 Javascript
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
jQuery基础语法实例入门
2014/12/23 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
canvas实现图像布局填充功能
2017/02/06 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
JavaScript模块化之使用requireJS按需加载
2017/04/12 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python调用百度语音REST API
2018/08/30 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
通过Python实现Payload分离免杀过程详解
2020/07/13 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
优纳科技软件测试面试题
2012/05/15 面试题
会计与审计专业大专生求职信
2013/10/03 职场文书
结构工程研究生求职信
2013/10/13 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
简历自我评价模板
2015/03/11 职场文书
投资合作意向书范本
2015/05/08 职场文书
党性修养心得体会2016
2016/01/21 职场文书
使用MybatisPlus打印sql语句
2022/04/22 SQL Server