标签:
1.项目中常采用EL表达式来输出后台内容,但测试发现它并不能完美处理要输出内容包含有<>或&等HTML特殊字符问题。先直接给出此问题JSTL的解决方案:这样取值:<input id="name" value="${fn:escapeXml(name)}" type="text"/> 其中name为后台要输出值,如果直接用${name}且name值为 时文本框中就是空格而不是
2、用JSTL标签显示不转义的字符:<c:out value="<%=name%>" escapeXml="false"/>
不如直接用structs标签处理:<s:property value="name" >
另外注意该标签其它两个属性:
用于设置默认的值,在无法找到value表示的属性时,其值便直接取default值。比如
1)默认是true,表示将value内的内容强制转换成字符串显示
2)设置成false,表示将value值当做html代码去解析。此时如name值为 前台就显示为空白,跟EL表达式的默认情况一样。
不知为何EL表达式不像s:property一样把value内容强制转换为字符串显示处理,这样默认应该更合理。
EL 全名为Expression Language,它原本是JSTL 1.0为方便存取数据所自定义的语言。当时EL只能在JSTL 标签中使用,不能直接在JSP 网页中使用。到了JSP 2.0 之后,只要是支持Servlet 2.4 / JSP2.0 的Container,就都可以在JSP 网页中直接使用EL 了,需要引入页签:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
最后转一篇其它特殊字符处理的文章: <HTML、JS、JSON特殊字符 - JS到HTML特殊字符转换 - kobejayandy的专栏 - 博客频道 - CSDN.NET>
这几天做项目,发现从服务器端以JSON格式将数据传递到客户端后,通过JS显示在HTML页面时,有一些特殊字符不能直接显示,如后台传递过来的是 ‘<b>msg</b> #‘ 通过JS显示在HTML页面中时,显示成了msg # ,并不是<b>msg</b> #,这是由于<与>之间的内容看作是HTML标签了,而以&开头的 与#为HTML实体,所以显示不正常。
解决办法很简单,在JS将其渲染到HTML页面前转换一下即可:
上面在赋给div之前没有转换,所以显示不正常,第二个div显示正常,显示结果如下:
由于从服务器后端生成JSON格式的字符串,最后传递到客户端由 eval() 函数动态的生成Javascript,如果JSON字符串格式错误,则eval解析会出错,经常也是最常出错的是" ‘ \r\n 这三个字符,如 {name:‘I‘am‘}解析时会出错,同样,由于JavaScript中的字符串可由单引号也可由双引号引起来,所以双引号一样也有这样问题。另外,字符串是不能跨行写的,即你不能写成这样:{name:"I‘
am"}
所以这3个需要转换,另外换行可能依赖于平台,所以 \n 也需要转换,比如我们需要将后台抛出的异常栈信息以JSON的格式传回到浏览器上显示时,就需要将回车换行转换。代码如下:
显示结果 | 说明 | Entity Name | Entity Number |
显示一个空格 | |   | |
< | 小于 | < | < |
> | 大于 | > | > |
& | &符号 | & | & |
" | 双引号 | " | " |
显示结果 | 说明 | Entity Name | Entity Number |
? | 版权 | © | © |
? | 注册商标 | ® | ® |
× | 乘号 | × | × |
÷ | 除号 | ÷ | ÷ |
标签:
原文地址:http://www.cnblogs.com/doit8791/p/4552910.html