通过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 相关文章推荐
DOM_window对象属性之--clipboardData对象操作代码
Feb 03 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
Sep 12 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
Mar 05 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
Mar 24 Javascript
jquery实现表单验证并阻止非法提交
Jul 09 Javascript
全面解析JavaScript中的valueOf与toString方法(推荐)
Jun 14 Javascript
jQuery实现拖拽可编辑模块功能代码
Jan 12 Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
vue如何通过id从列表页跳转到对应的详情页
May 01 Javascript
vue+iview 兼容IE11浏览器的实现方法
Jan 07 Javascript
vue中可编辑树状表格的实现代码
Oct 31 Javascript
8个非常实用的Vue自定义指令
Dec 15 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实现Socket服务器的代码
2008/04/03 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
node.js 核心http模块,起一个服务器,返回一个页面的实例
2017/09/11 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
Python实用技巧之利用元组代替字典并为元组元素命名
2018/07/11 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
Django单元测试工具test client使用详解
2019/08/02 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
python判断变量是否为列表的方法
2020/09/17 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
Overload和Override的区别
2012/09/02 面试题
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
师恩难忘教学反思
2014/04/27 职场文书
贷款委托书怎么写
2014/08/02 职场文书
建筑工地文明标语
2014/10/09 职场文书
中学总务处工作总结
2015/08/12 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书