fckeditor免费的版本,存在很多问题.比如你可以插一个图片,或是改变文本的格式.但是当你单击提交保存在数据库中了.它将按源代码中的格式保存并不做相关的处理.这样也就造成了,当你再次想修改上次的内容时,在fckeditor无法显示了.
<
form
action
="ActionServlet?method=modifyContactUs&action=SiteConfigAction&page=admin/manager_config/modify_contact_us.jsp"
method
="post"
>
< table width ="80%" align ="center" >
< tr >
< td colspan ="2" > 联系我们 </ td >
< td >
</ td >
</ tr >
< tr >
< td colspan ="2" >< br >< script type ="text/javascript" >
var oFCKeditor = new FCKeditor( ' contact_us ' );
oFCKeditor.BasePath = " fckeditor/ " ;
oFCKeditor.Width = " 90% " ;
oFCKeditor.Height = " 600 " ;
oFCKeditor.Value = " <%=siteConfig.getContactUs() %> " ; // 问题在这
oFCKeditor.ToolbarSet = " fvedu " ;
oFCKeditor.Config[ " CustomConfigurationsPath " ] = " /pvedu/js/admin_fckeditor.js " ; // 这里是我的fckeditor配置文件
oFCKeditor.Create();
</ script >
< br ></ td >
</ tr >
< tr >
< td >
< input type ="submit" name ="submit" value ="提交" >
</ td >
</ tr >
</ table >
</ form >
< table width ="80%" align ="center" >
< tr >
< td colspan ="2" > 联系我们 </ td >
< td >
</ td >
</ tr >
< tr >
< td colspan ="2" >< br >< script type ="text/javascript" >
var oFCKeditor = new FCKeditor( ' contact_us ' );
oFCKeditor.BasePath = " fckeditor/ " ;
oFCKeditor.Width = " 90% " ;
oFCKeditor.Height = " 600 " ;
oFCKeditor.Value = " <%=siteConfig.getContactUs() %> " ; // 问题在这
oFCKeditor.ToolbarSet = " fvedu " ;
oFCKeditor.Config[ " CustomConfigurationsPath " ] = " /pvedu/js/admin_fckeditor.js " ; // 这里是我的fckeditor配置文件
oFCKeditor.Create();
</ script >
< br ></ td >
</ tr >
< tr >
< td >
< input type ="submit" name ="submit" value ="提交" >
</ td >
</ tr >
</ table >
</ form >
问题在oFCKeditor.Value="";它这里是用了""来显示出内容.但是如果你从数据库中读出的内容本身有"号时,就会造成不正常
的显示.比如你的value中的内容是<img src="**">是就会变成oFCKeditor.Value="<img src="**">";这样就给value赋了不正常的内容了.
还有是一种情况当你输入如下内容:
第一行内容
第二行内容
当你输入上面的两行内容时,本身代码是没有什么问题的,fckeditor将会把它变成
第一行内容<br>
第二行内容
但是这里有个软回车,当你单击保存在数据库时,它会又出现了问题,此时
OfCKeditor.Value="第一行内容<br>
第二行内容";
发现了吧,它的""双引号不在一行,问题就暴露无遗出来了fckeditor又不认识这些东西.所以可编辑区域它又会不显示.
解决方法
在读数据库的数据时,你先做些预处理,可以给你将要处理的字符串调用如下方法
public
static
String repalceDoubleQuotationAndSoftEnter(String doubleStr)
{
String resultStr = null ;
if ( null != doubleStr)
{
resultStr = doubleStr.replace( " \" " , " ' " ); // 替换掉双引号为单引号
resultStr = resultStr.replace( " \r\n " , "" ); // 将软件回车替换为空
}
return resultStr ;
}
{
String resultStr = null ;
if ( null != doubleStr)
{
resultStr = doubleStr.replace( " \" " , " ' " ); // 替换掉双引号为单引号
resultStr = resultStr.replace( " \r\n " , "" ); // 将软件回车替换为空
}
return resultStr ;
}
这样就可以防止fckeditor不显示了.