通过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 相关文章推荐
TextArea不支持maxlength的解决办法(jquery)
Sep 13 Javascript
通过Javascript读取本地Excel文件内容的代码示例
Apr 08 Javascript
jQuery控制Div拖拽效果完整实例分析
Apr 15 Javascript
jquery中实现时间戳与日期相互转换
Apr 12 Javascript
JavaScript手机振动API
Jun 11 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
JavaScript与ActionScript3两者的同性与差异性
Sep 22 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
Feb 17 Javascript
AngularJS 防止页面闪烁的方法
Mar 09 Javascript
小程序图片长按识别功能的实现方法
Aug 30 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
Jun 18 jQuery
vue内置组件component--通过is属性动态渲染组件操作
Jul 28 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邮件专题
2006/10/09 PHP
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
php 变量定义方法
2009/06/14 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
2015/12/13 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
jquery轮播的实现方式 附完整实例
2016/07/28 Javascript
js 监控iframe URL的变化实例代码
2017/07/12 Javascript
jQuery实现的简单获取索引功能示例
2018/06/04 jQuery
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
编写python代码实现简单抽奖器
2020/10/20 Python
python urllib和urllib3知识点总结
2021/02/08 Python
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
简单说说tomcat的配置
2013/05/28 面试题
经典C++面试题一
2016/11/06 面试题
会计电算化个人自我评价
2013/11/17 职场文书
初中优秀班集体申报材料
2014/05/01 职场文书
求职信怎么写
2014/05/23 职场文书
保密工作目标责任书
2014/07/28 职场文书
市场策划求职信
2014/08/07 职场文书
党的群众路线教育实践活动个人对照检查材料(乡镇)
2014/11/05 职场文书
2014年服务员工作总结
2014/11/18 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书