el表达式中换行_使用EL表达式解决由单引号,双引号,换行导致的问题

之前说过,在JSP中接收ACTION中的参数的时候,比较好用的一种就是EL表达式。

但是,在js中接收参数使用EL表达式时必须用引号括起来,类似  value:’${param}‘;  当param中含有单引号、双引号 或者 换行符的时候,页面会报出脚本错误,导致页面无法正常展示。

当你不想改动很多代码,而且工程中一开始就没有考虑到这个问题,像我一样,最简单的办法就是,牺牲一点服务器的性能(这样一般来说是不推荐的)

写一段java程序,将你要展示的值过滤一遍:

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 "";

}

}这段代码非常简单,将内容中的换行替换为空格,将引号(单,双)替换为\'或者\“,也就是JS中的转义格式,就不会影响EL表达式的使用了。

而且,你还可以使用EL表达式的自定义标签库,这样做的好处,就是将后台处理字符串的压力转移到了前台,这样做是比较推荐的。

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

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

A tag library exercising SimpleTag handlers.1.0SimpleTagLibrary/fsformat string value for JSfskyo.org.ClassNamejava.lang.String fs(java.lang.String)

配置web.xml

/WEB-INF/tags/formatForJS.tld 在JSP页面的应用.

如果param中含有单引号,就不会报脚本错误了。 以上代码,在tomcat6下测试通过。

原文参照自:http://www.baisoujs.com/detail_137277744000564.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值