最近做项目遇到下列问题:
定义一个TextArea,值取<s:property value="#" escape="false"/>
问题1:由于给控件赋值一般都用单引号、双引号括起来,而这个字段值中有可能包含单引号、双引号,直接赋值就会导致报字符串未结束或缺少什么的错误,
解决方法:从数据库读出字段值后做个处理,将单引号全部替换为“'”,要展示的时候在页面上先赋值然后再把“'”全部替换回来就可以了。
后台读取:
normalModelDetail = (map);
String lStr = ().replaceAll("'", "'");
(lStr);
页面展示:
var reg1 = new RegExp("'","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("'","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')
});