struts2的标签 s:property 的 escape

来源:互联网 发布:集成吊顶软件免费版 编辑:程序博客网 时间:2024/05/16 17:47

<s:property value="hfData" escape="false"/>

这个标签表示返回后端的hfData的值。

escape 表示是否转义,详细讲解见js 中的转义字符。

1、默认为 true,表示将 hfData 中的html标签和特殊字符进行转义,如双引号会转义为&quot;,然后返回到html页面中。这样浏览器看到这些字符,会自动反转义成原样,因此就不会再把它当作html标签进行解析了。
2、设置为 false,表示将 hfData 的内容原封不动的进行输出,包括 html 标签和特殊字符,变为html页面的一部分,这样浏览器自然会解析这些标签。

如:
后端的java代码为

hfData = "<button>按钮</button>";

则前端

1、escape="true"时,页面效果为:,源码为 &lt;button&gt;按钮&lt;/button&gt;   这也是默认的情况。
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 语法错误。



阅读全文
0 0
原创粉丝点击