使用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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring框架中使用EL表达式(Expression Language)可以方便地访问和操作Java对象,主要用于在JSP页面或Spring的注解中进行数据绑定和表达式求值。 以下是在Spring中使用EL表达式的几个常见场景和用法: 1. 在JSP页面中使用EL表达式: 在JSP页面中,可以使用EL表达式访问和操作Java对象的属性、方法和集合。例如,`${user.name}`可以获取名为user的Java对象的name属性值。 2. 在Spring MVC的注解中使用EL表达式: 在Spring MVC中,可以使用EL表达式在注解中动态地设置属性值。例如,`@RequestMapping("${url.mapping}")`可以根据EL表达式`${url.mapping}`的值动态地设置请求映射路径。 3. 在Spring的XML配置文件中使用EL表达式: 在Spring的配置文件中,可以使用EL表达式引用其他属性或bean的值。例如,`<property name="timeout" value="${connection.timeout}"/>`可以将`${connection.timeout}`的值设置为bean的timeout属性。 4. 使用Spring表达式语言(SpEL): Spring框架还提供了一种更强大的EL表达式语言,称为SpEL(Spring Expression Language)。SpEL支持更复杂的表达式求值和操作,可以在Spring的注解、XML配置文件以及运行时动态注入等场景中使用。 需要注意的是,在使用EL表达式时,需要确保相关的JAR包已经添到项目的依赖中,通常是`javax.el-api`和`jstl`。 希望以上信息对你有所帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值