1.问题背景
你有没有遇到过这样的问题?
jsp中有个textarea控件,当你存数据进数据库中的时候。再取出来,放到textarea中,你会发现,样式不见了?原来好好的样式,现在排成一行了 ?
这时候该如何解决呢?
2.原因
textarea中的换行、空格都是有html字符的。只是在textarea中看不到而已。存进数据库的时候,这些符号并没有存进数据库,大概是这样的原因哈。
3.解决方案
当时出现这样的问题,在网上查了很多。但是都是说的不清不楚的。让我很迷惑,最后结合网上资料和自己的摸索,终于把这个问题解决了。下面贴出解决方法。
(1)数据从页面存库处理
数据存进数据库的时候,将换行符、空格符替换成文本:
/**
* Function Detail : 对输入的字符处理
* @param pstrWord
* @return
* @throws java.io.UnsupportedEncodingException
*/
public static String replaceIn(String pstrWord) throws Exception {
// pstrWord = replace(pstrWord);
pstrWord = pstrWord.replaceAll("\r\n", "<br>");
pstrWord = pstrWord.replaceAll(" ", " ");
return pstrWord;
}
此时再进行存入数据库操作。这时候你会发现相应的html字符也存进去了。
(2)从数据库读出数据操作
将刚才替换的<br>和 替换回\n和空格:
/**
* Function Detail : 对输出的字符处理
*
* @param pstrWord
* @return
* @throws java.io.UnsupportedEncodingException
*/
public static String replaceOut(String pstrWord) throws Exception {
pstrWord = pstrWord.replaceAll("<br>", "\n");
pstrWord = pstrWord.replaceAll(" ", " ");
return pstrWord;
}
现在已经完成一大部分工作了。进行最后一步
(3)jsp页面的替换
再在js中从后台取出的数据将<br>替换为\n
var content = row.gn_content;
content = content.replace(/<br>/g, "\n");
亲测,已经通过。贴图:
列表界面显示,不过列表显示会有html符号
textarea显示:
样式出现了。。