前后台传换行符的问题
今天遇到一个看似很简单,又有点棘手的问题。
前台传到后台的数据有换行符,后台接收,如果不做处理直接返回到页面,用jsp接收${desc}是没有问题的。但是,如果在js中引用,控制台就会报出unterminated string literal的错误。遇到这种情况有两种方式可以处理:
1)保存数据前先处理,用其他字符串代替\n或者\r\n,后台保存后,如果前台有需要再返回时,可以再替换成\n或者\r\n(没做验证,应该没问题)。不推荐,略繁琐,容易有陷阱。
2)按原有格式保存到数据库中,当前台用到时,可在返回前台之前做一个特殊处理,在前台页面再转换成换行符,已验证,可行。
需要注意的是,在火狐浏览器下,换行符为\r\n,在谷歌浏览器下,换行符为\n
后台:
public String filterLineBreak(String desc){
if(desc!=null&&desc.indexOf("\n")!=-1){
if(desc.indexOf("\r\n")!=-1){
desc = desc.replace("\r\n","");
}else{
desc = desc.replace("\n","<br/>");
}
}
return desc;
}
前台:
var desc = '{desc}'.trim();
if(desc.indexOf("<br/>")){
desc = desc.replace(//g,"\n");
}
if(desc.indexOf("<brbr/>")){
desc = desc.replace(//g,"\r\n");
}