使用Activiti流程器点击保存模型报如下错误:
1. 错误信息
Caused by: org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
前言中不允许有内容。
at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:136)
at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(SVGAbstractTranscoder.java:156)
at com.it.cloud.modules.activiti.controller.ActManageController.saveModel(ActManageController.java:119)
… 79 common frames omitted
2. 原因
后台调试发现svg_xml参数获取到为空字符串,里面还一堆换行符什么的,不是前台传递的xml 字符串。
原因是项目中使用 XssFilter过滤掉了html样式。
3. 解决办法
得到原始请求参数
HttpServletRequest orgRequest = XssHttpServletRequestWrapper.getOrgRequest(request);
// 获取正常参数
// String content = orgRequest.getParameter("svg_xml ");
// 因为添加了html过滤,直接通过参数得不到html符号(XssFilter)
// 获取FormData参数
svgXml = orgRequest.getParameterMap().get("svg_xml")[0];