越努力,越幸运

朱季谦

腾讯云社区2022年度最佳作者、阿里云专家博主认证

SSH框架集成Activiti Modeler在线设计器页面出现问号及乱码的解决办法

文·原创/朱季谦

 

工作流是一个针对企业用户、开发人员、系统管理员的轻量级工作流业务管理平台,其核心是使用Java开发的快速、稳定的BPMN2.0流程引擎。在我们日常开发当中,例如oa系统里的请假功能,采购流程,以及订单流程,等等,都会涉及到流程的开发,这里面可以用工作流来进行开发,可以起到快速开发且稳定的效果,笔者最近都在研究工作流,也对这个东西有很大的兴趣。

 

最近因公司业务需要,需将Activiti Modeler的web在线设计器集合到公司一套Spring+SpringMVC+hibernate框架里,这是我第一次玩工作流的在线设计器,先前都只是在eclipse上安装工作流的插件进行流程图的设计以及开发,所以,整合在线设计器,在这个过程当中还是遇到了不少坑。其中有一个是乱码问题,也就是整合完成之后,运行项目时,在点击路径localhost:8080/activiti/modeler.jsp?modelld=1跳转到Activiti在线设计器页面时,原以为下一秒可以看到带有很多图标的设计器页面,但万万没有想到的是,竟然出现了这样一个东西——

 

你没有看错,整张页面的title部分,都变成问号了!

 


当时我的表情可以说是一脸蒙蔽,懵逼之后就开始冷静下来,准备看看究竟是哪里出现了问题。

 

经过一番刻骨铭心的检查后,发现这些页面上的数据来源原来是从一个stencilset.json里获取到的,这个json文件是Activiti modeler自身带的,具体内容如下截图所示——

在控制层,访问这个stencilset.json的方法是长这样的——

 

找到这个访问json的方法后,我试着测了一下,发现在谷歌浏览器页面上显示这个json文件的数据也是乱的,中文的地方都出现了一个个问好,问号对应的正好就是web设计器页面上的乱码。

 

根据这个现象,可以确定乱码问题就出在访问这个json文件出错之上。

 

在上面的截图中,类StencilsetRestResource的方法getStencilset中,返回的是一个String类型,在Activiti Modeler源码里,会自动将String类型转换成Json格式的数据,但是,该字符串数据若出现以下乱码情况,转换就会出现问题,就会导致页面也跟着乱码,所以,解决的办法是保证方法getStencilset读取stencilset.json不出现以下乱码问题,而是以正常的json字符串格式——

 

 解决办法——在Spring-MVC.xml文件里加这样一段编码设置,就可以解决该问题了,这样访问的json字符串就不会出现乱码,页面上也可以正常运行了。

 

 

最后截取一张成功后的Activiti Modeler在线设计器页面图片——

 

 

posted @ 2019-07-09 20:20  朱季谦  阅读(1021)  评论(0编辑  收藏  举报