日期:2014-05-17 浏览次数:20658 次
标签,存入数据库,然后前端页面使用Struts标签 <s:property value="#content" escape="false" /> 这样会解析到标签并显示引用的效果, 但是问题是如何正确显示用户输入的HTML代码呢? 比如如果用在留言框上输入<textarea></textarea>会显示为一个输入框。。------解决方案--------------------你的意思是特殊字符的过滤吧!我们页面上显示的特殊字符是可以通过转义字符来实现的,比如\n等于换行,又例如,HTML的< >&"©对别是<,>,&,",©的转义字符。那么如果你把标签的一对尖括号<> 用特殊字符代替,它便失去了HTML标签的功能,而变成普普通通的字符,之所以你在主题中打出来的<textarea></textarea>在论坛上没有实现标签的功能,是因为这个论坛在取出数据库的原数据后,用字符过滤的方法把原数据中的特殊符号都进过了转义。至于过滤的方法,我自己在用的是toHTML(String)为方法,String就是你数据库里的原数据,详细实现,自己想吧。------解决方案--------------------js 操作。。。------解决方案--------------------类似 < >& 的或者过滤特殊字符,正则等。 ------解决方案--------------------<![CDATA[ ]]> ------解决方案-------------------- public static String filter(String message) { if (message == null) return (null); char content[] = new char[message.length()]; message.getChars(0, message.length(), content, 0); StringBuilder result = new StringBuilder(content.length + 50); for (int i = 0; i < content.length; i++) { switch (content[i]) { case '<': result.append("<"); break; case '>': result.append(">"); break; case '&': result.append("&"); break; case '"': result.append("""); break; default: result.append(content[i]); } } return (result.toString()); }
public static String filter(String message) { if (message == null) return (null); char content[] = new char[message.length()]; message.getChars(0, message.length(), content, 0); StringBuilder result = new StringBuilder(content.length + 50); for (int i = 0; i < content.length; i++) { switch (content[i]) { case '<': result.append("<"); break; case '>': result.append(">"); break; case '&': result.append("&"); break; case '"': result.append("""); break; default: result.append(content[i]); } } return (result.toString()); }