• 欢迎访问ByWei.Cn,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,加入百味博客 软件定制QQ群
  • 已升级为最新版主题,并将持续优化改造中,支持说说碎语功能,可像添加文章一样直接添加说说,博客主题升级啦
  • 感谢您百度求点赞啊!百度网址
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏百味博客吧
  • 博主热烈欢迎 软件定制开发 联系:http://www.bywei.cn

解决页面由单引号、双引号、换行符导致的问题

编程语言 百味博客 11年前 (2012-05-22) 2313次浏览 0个评论 扫描二维码

最近在做驴妈妈旅游网站改版时,遇到了一个关于数据在界面显示的问题。网站使用的是el表达式作为页面数据显示,但在使用过程中,如果读取的字符串中存在‘”’(引号),则会出现错误

  例子:title="海螺沟自由行,观"日照金山" 泡温泉,住逸家温泉酒店+金山饭店双人标间_双人套票(CD)"  提示信息title显示:海螺沟自由行,观

  针对该问题可以使用如下解决方案

  (1)使用替换:title="${title?if_exists?replace(‘"’,)}"

  (2)用EL表达式的自定义函数

首先写格式化字符串的方法。

01
02
03
04
05
06
07
08
09
10
11
//这里我将换行符转化为空格," 转化为 \",'转化为 \'; ,也就是转化为JS的转义格式
public static String fs(String s){
 if(s!=null && s.length()>0){
 s = s.replaceAll("(\r|\n|\r\n|\n\r)", " ");
 s = s.replaceAll("\"","\\\\"+"\"");
 s = s.replaceAll("\'","\\\\"+"\'");
 return s;
 }else{
 return "";
 }
 }

WEB-INF下创建文件夹tags,用来存放标签文件。

然后在tags文件夹下创建formatForJS.tld文件,描述自定义函数。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8" ?>
 version="2.0">
 <description>A tag library exercising SimpleTag handlers.</description>
 <tlib-version>1.0</tlib-version>
 <short-name>SimpleTagLibrary</short-name>
 <uri>/fs</uri>
<function>
<description>format string value for JS</description>
<name>fs</name>
<function-class>kyo.org.ClassName</function-class>
<function-signature>java.lang.String fs(java.lang.String)</function-signature>
</function>
  
</taglib>

配置web.xml

1
2
3
4
5
6
7
8
<jsp-config>
<taglib>
<taglib-uri>http://www.2016k.com</taglib-uri>
<taglib-location>
/WEB-INF/tags/formatForJS.tld
</taglib-location>
</taglib>
</jsp-config>

在JSP页面的应用.
1
2
3
4
<%@ taglib prefix="k"  uri="http://www.2016k.com"%>
<script type="text/javascript">
alert('${k:fs(param)}');
</script>

如果param中含有单引号,就不会报脚本错误了。
以上代码,在tomcat6下测试通过,但是如果你的应用是部署在Websphere下,则还有需要注意的地方。

百味博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:解决页面由单引号、双引号、换行符导致的问题
喜欢 (3)
[微信扫一扫]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址