<s:property value="hfData" escape="false"/>
这个标签表示返回后端的hfData的值。
escape 表示是否转义,详细讲解见js 中的转义字符。
1、默认为 true,表示将 hfData 中的html标签和特殊字符进行转义,如双引号会转义为",然后返回到html页面中。这样浏览器看到这些字符,会自动反转义成原样,因此就不会再把它当作html标签进行解析了。
2、设置为 false,表示将 hfData 的内容原封不动的进行输出,包括 html 标签和特殊字符,变为html页面的一部分,这样浏览器自然会解析这些标签。
如:
后端的java代码为
hfData = "<button>按钮</button>";
则前端
1、escape="true"时,页面效果为:
,源码为 <button>按钮</button> 这也是默认的情况。
2、escape="false"时,页面效果为:
,源码为 <button>按钮</button>。
但是,有一种方法,可以将escape="true"也展现出html标签的效果来:
可以先赋值到一个隐藏的input中,然后用js获取这个input的值:
<input name="hfData" type="hidden" id="hfData" value="<s:property value="hfData" />" />
<script>
var qstr = document.getElementById("hfData").value;
</script>
然后用js将qstr的值赋给一个div的innerHtml,则这个div内也会显示成一个按钮
原因是,
使用js获取隐藏域的value时,会自动反转义回来
这种方法有一个很重要的应用场景,那就是,可以将 hfData 的值原封不动的赋给 qstr,而不用担心 hfData 中包含的斜杠、单引号或双引号等特殊字符造成 js 错误。注意在使用时,一定不要设置成escape="false" 。
而如果直接使用 var qstr = '<s:property value="hfData" escape="false" />'; 则很容易造成 js 语法错误。