使用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页面的应用.
<%@ taglib prefix="k"  uri=""%>

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

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

你可能感兴趣的:(JSP)