Ext显示特殊字符问题

时间:2025-05-15 18:04:49

最近做项目遇到下列问题:

定义一个TextArea,值取<s:property value="#" escape="false"/>

问题1:由于给控件赋值一般都用单引号、双引号括起来,而这个字段值中有可能包含单引号、双引号,直接赋值就会导致报字符串未结束或缺少什么的错误,

              解决方法:从数据库读出字段值后做个处理,将单引号全部替换为“&#39”,要展示的时候在页面上先赋值然后再把“&#39;”全部替换回来就可以了。

             后台读取:

             normalModelDetail = (map);
     String lStr = ().replaceAll("'", "&#39;");
     (lStr);

            页面展示:

             var reg1 = new RegExp("&#39;","g"); //创建正则RegExp对象

             var postParam = new ({
fieldLabel : 'POST参数',
id : 'postParam',
name : '',
height : 70,
width : 405,
value : '<s:property value="#" escape="false"/>'.replace(reg1, "'")

             });


问题2:当字段值有回车换行时,由于js不支持多行字符串,未处理直接赋值将导致字符串未结束的错误,

              解决方法,字段在从数据库读出后做个处理,将回车换行全部替换为“<br>”,然后在页面赋值后再替换回来。

              后台:normalModelDetail = (map);
          String lStr = ().replaceAll("\r\n", "<br>");
  (lStr);

              页面:var reg1 = new RegExp("&#39;","g"); //创建正则RegExp对象
                  var reg2 = new RegExp('<br>', 'g');

                         var postParam = new ({
            fieldLabel : 'POST参数',
            id : 'postParam',
            name : '',
              height : 70,
            width : 405,
            value : '<s:property value="#" escape="false"/>'.replace(reg1, "'").replace(reg2,'\r\n')
                  });