问题分析:
我们在编写论坛的过程中,如果用户编辑的是一个富文本的话,那么存储到数据库就可以是存储当前富文本的html文本。这个可以通过富文本插件的方法导出html文本或使用jQuery或js到处html文本。如果我们成功的将html文本存储到数据库中,希望将这一段html文本利用struts标签回显到jsp页面中,我们就会发现html文本以字符串的现实到页面中了。
例如:<h1 style="color:red;">测试文本</h1>
我们希望的效果应该是: 测试文本
但实际上现实出来的却是:<h1 style="color:red;">测试文本</h1>
问题原因:
这是因为我们利用struts标签回显一段html文本时,strust并不知道这是一段有格式的html文本,它会通配的识别为一段无格式的文本,这不是后台传递方式的原因,通过单步断点我们可以发现知道将一段html文本put到前端后struts标签解析时,html文本并没有发生改变。这一观点可以在试着将它回显的文本复制到编译器中,显示的效果会与预期相同。
解决方案:
<s:property value="变量名" escapehtml="true">
struts2之后,struts标签就没有eacape这个属性了,取而代之的是
escapeJavaScript
escapeHtml
escapeXm
这三个属性默认都是false的,设置为true就可以显示原生的标签了
如果我们要回显的是jsp格式文本,那么就设置 escapeJavaScript 为 true
如果要回显html格式文本,就设置 escapeHtml 为 true
其他同理。