quartz定时任务cron表达式讲解及翻译成现实语言的插件的使用详解

时间:2021-11-02 07:50:20

cron表达式讲解

参见该网址:

https://www.cnblogs.com/GarfieldTom/p/3746290.html

 

cron表达式只有专业技术人员才看得懂,普通人不知道表达式是什么意思,

有需求让我们将cron表达式翻译成普通人可以看懂的文字,刚开始觉得这个

需求有点强人所难,不过后来在网上竟然找到了解决方案。

在GitHub上有开源的项目,链接如下:

https://github.com/bradymholt/cRonstrue

将项目下载到本地,解压压缩包,点开文件夹,copy里面的dist文件夹到自己

需要的项目里,dist里面有cron表达式翻译的核心js包和locales国际化的相关语言包。

 

在要翻译cron表达式的页面引入核心js包:

<script src="<%=basePath%>/js/dist/cronstrue-i18n.min.js" type="text/javascript"></script>

 

在需要翻译的地方调用js包里提供的API,很简单只有一句代码:

cronstrue.toString(cronString, { locale: "zh_CN" })

第一个参数是cron表达式,

第二个参数是一个JSON对象,locale的值为相应的语言标识,这里翻译成中文。

 

如果要将列表里含有cron表达式的一列的值翻译成中文,就必须在页面加载完毕后来做特殊处理,

下面给一个例子:

js代码:

//同步表格定时规则翻译
$("[name='cronString']").each(function(){
	var cronString = $(this).text();
	if(cronString){
		$(this).prop("innerHTML",cronstrue.toString(cronString, { locale: "zh_CN" }));
	}
});
//异步表格定时规则翻译
var checksObj = $('td[data-index="10"]').find(".datatable-cell .text-center").prevObject;
if (null != checksObj && checksObj.length >= 1) {
	for (var i = 0; i < checksObj.length; i++) {
		var cronString = $(checksObj[i]).text();
		if(cronString){
			$(checksObj[i]).prop("innerHTML",cronstrue.toString(cronString, { locale: "zh_CN" }));
		}
    }
}

html代码如下:

<td name="cronString">${modelNameToCronExpress[tmodelMaintainConfig.modelName] }</td>

因为前端用的由bootstrap改写的zui框架所以表格实际上有两份,一份是同步表格即html里编写的表格,另一份是

框架自动渲染的表格,所以js代码要写两份。之所以要在td上加一个name属性是为了方便获取cron表达式这一列的

所有td对象。

总体思想是获取所有待替换对象,遍历获取每个对象的值调用翻译API后将值赋值给原对象。