起因
最近系统发现一个隐藏的bug,使用freemarker模板引擎生成pdf导出的时候,发现对于一些特殊字符会报错。因为生成的pdf页数较多,需要填充的字符也有上百个,所以写了个通用的替换方法。
原以为还是挺简单的,后来测试的时候发现有些地方考虑的还不是很周到。目前是能满足基本的要求不再出现bug,但是逻辑还是能更加完善,能满足更多的场景要求。
全部代码如下:
/**
* 通过反射改变字符类型对象的特殊字符
*
* @param originData
*/
private void parseSpecialCharacters(Object originData) {
if (null == originData) {
return;
}
Field[] fields = originData.getClass().getDeclaredFields();
for (Field s : fields) {
//获取属性名
String name = getMethodName(s.getName());
//获取属性类型
String type = s.getGenericType().toString();
if (type.equals("class java.lang.String")) {
processStringObjectSpecialChars(originData, name);
} else if (type.contains("java.util.List")) {
try {