Knoage-6.x社区版(spagoBI升级版)在使用时发现Document不能保存中文字符。
TAG:Knowage汉化,SpagoBI汉化,Knowage中文版,Knowage中文乱码
场景现象
如果想报表名或描述保存为中文时会发生如下错误:
提示错误:1
2ERRORS:
The field Description must be an alphanumeric string (letters and numbers with other character such as parenthesis and -_;:!?,.\/)
只能输入字母数字及某些特殊字符的组合。
查询源代码:1
2
39016 = The field %0 must be an alphanumeric string (letters and numbers with other character such as parenthesis and -_;:!?,./)
ERROR_EXTENDED_ALFANUMERIC="9016";
一、重置验证
页面代码:
knowage\src\main\webapp\WEB-INF\conf\analiticalmodel\documentBrowser.xml
验证规则:knowage\src\main\webapp\WEB-INF\conf\analiticalmodel\validation.xml
重置验证:1
2
3
4
5
6
7
8
9<FIELD name="name" label="#SBIDev.docConf.docDet.nameField">
<VALIDATOR validatorName="MANDATORY"/>
<!-- <VALIDATOR validatorName="EXTENDED_ALFANUMERIC"/> ranying -->
<VALIDATOR validatorName="MAXLENGTH" arg0="200"/>
</FIELD>
<FIELD name="description" label="#SBIDev.docConf.docDet.descriptionField">
<!-- <VALIDATOR validatorName="EXTENDED_ALFANUMERIC"/> ranying -->
<VALIDATOR validatorName="MAXLENGTH" arg0="400"/>
</FIELD>
重置之后可以保存了但内容是乱码:
二、修复乱码
跟踪代码发现在验证之前就已经是乱码了,
请求链路:
1.it.eng.spago.dispatching.httpchannel.AdapterHTTP
- DetailBIObjectModule
- Service
- handleMultipartForm(request, requestContext);
- modBIObject
问题就在handleMultipartForm方法,原因是使用common-fileupload解析字段内容但使用的默认编码格式,改为使用UTF-8格式读取字段内容。
1 | private void handleMultipartForm(HttpServletRequest request, RequestContextIFace requestContext) |
修改之后可以正常保存中文名及描述了,Label建议保持只支持英文数字格式。
转载请注明出处:https://ranying666.github.io/2018/08/20/knowage-zh-doc/
使用过程中遇到任何问题欢迎留言或加入Knowage开源BI中国社区:QQ 158245788