EL中拼接字符串的方法

近期在项目中碰到一个需要在JSP页面中比较两String类型的值的问题,于是想当然的写了如下代码:

<c:if test="${‘p‘+longValue==‘p1‘}">some text</c:if>

其中longValue是requestScope中一个Long类型的值,访问JSP页面,报错,查看控制台,抛了NumberFormatException异常

java.lang.NumberFormatException: For input string: "p"    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)    at java.lang.Long.parseLong(Long.java:410)    at java.lang.Long.valueOf(Long.java:525)...

由出错信息可得知EL尝试将字符"p"解析为Long类型的值然后进行算术运算,查询文档,有下面一段话:

All of the binary arithmetic operations prefer Double values and all of them will resolve to 0 if either of their operands is null. The operators + - * % will try to coerce their operands to Long values if they cannot be coerced to Double.

由此可以知道+操作符在EL中只是一个算术运算符,不能用来进行字符串拼接。只能使用其他办法。

由于EL中能直接调用对象的方法,而String类型对象中有一个concat(String str) 方法,返回值为拼接str之后的结果字符串。

而且基本类型能自动转为String类型作为concat的传入参数,于是修改代码为:

<c:if test="${‘p‘.concat(longValue)==‘p1‘}">some text</c:if>

运行结果一切正常。

后查阅 EL 3.0 Specification 文档,看到EL3.0提供了字符串拼接运算符"+="。

String Concatenation Operator

To evaluate

A += B 
  • Coerce A and B to String.
  • Return the concatenated string of A and B.

于是在EL3.0中可以使用以下代码:

<c:if test="${(‘p‘+=longValue)==‘p1‘}">some text</c:if>

String Concatenation Operator

To evaluate

A += B 
  • Coerce A and B to String.
  • Return the concatenated string of A and B.
时间: 2024-11-16 12:13:37

EL中拼接字符串的方法的相关文章

shell中截取字符串的方法总结

shell中截取字符串的方法有很多种, ${expression}一共有9种使用方法. ${parameter:-word} ${parameter:=word} ${parameter:?word} ${parameter:+word} 上面4种可以用来进行缺省值的替换. ${#parameter} 上面这种可以获得字符串的长度. ${parameter%word} 最小限度从后面截取word ${parameter%%word} 最大限度从后面截取word ${parameter#word}

学习Linux shell脚本中连接字符串的方法

这篇文章主要介绍了Linux shell脚本中连接字符串的方法,如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1}"=" echo $value2 把要添加的字符串变量添加{},并且需要把$放到外面. 这样输出的结果是:home=,也就是说连接成功. 又如代码如下: [[email protected] sh]# var1=http://www.3lian.com/etc/ [[email protected] s

SQL Server数据库存储过程中拼接字符串注意的问题

在SQL Server数据库中书写复杂的存储过程时,一般的做法是拼接字符串,最后使用EXEC sp_executesql '拼接的字符串' 查询出结果. 先看一段代码: 1 -- ============================================= 2 -- Author: XXX 3 -- Create date: 2014-09-19 4 -- Description: 获取学生列表信息 5 -- ====================================

[每天解决一问题系列 - 0004] Excel 公式中拼接字符串

问题描述: 之前很少用excel的formula,今天用户发过来一个文件,里边存储了很多字段对应的编号.想把这些生成我想要的格式,然后导入代码中,当然可以使用第三方的excel操作库来做.最简单直接的方法自然是用excel强大的formula功能了. 解决方法: 假如A1的值为aaa,B1的值为bbb,我想要的结果是(“aaa","bbb"); 其实很简单,只需要用&来拼接字符串即可,比如 = A1&B1.要得到我想要的结果,只需这么做就可以 = "

html中拼接字符串问题

hmtl拼接问题: 今天在同事解决问题的时候发现 html <lable id="p"[email protected]></label> 拼接出来的是 p+5 <lable id="p'[email protected]'"></label> 拼接出来的是 p"+5" 这些都不是我们想要的效果,而且js jquery中 id是不认的 正确拼接方法如下 <lable id=‘[email pr

流编辑器sed使用总结及利用sed从文本中提取字符串的方法

sed 是一个编辑器,但它与其它大多数编辑器不同.除了不面向屏幕之外,它还是非交互式的,我们常用的vim编辑器则是交互式的. 这意味着必须将要对数据执行的命令插入到命令行或要处 理的脚本中.sed 在一个文件(或文件集)中非交互式.并且不加询问地接收一系列的命令并执行它们.因而,它流经文本就如同水流经溪流一样,因而 sed 恰当地代表了流编辑器,可以对文件或者文件集批量的进行删除 替换 插入 追加等操作. 流编辑器非常适合于执行重复的编辑,这种重复编辑如果由人工完成将花费大量的时间. 其参数可能

【分享】bat中处理字符串的方法

C语言中有各种处理字符串的函数,BAT中没有C语言那么强大,所以只能结合SET语句,做一些简单的字符串处理 首先看SET 命令的格式如下: 环境变量替换已如下增强:.     %PATH:str1=str2% 会扩展PATH 环境变量,用"str2" 代替扩展结果中的每个"str1". 要有效地从扩展结果中删除所有的"str1","str2" 可以是空的. "str1" 可以以星号打头:在这种情况下,&qu

js中替换字符串(replace方法最简单的应用)

replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串. 首先获取时间控件的值:"2017-06-12"  接口参数需要时间格式为:"2017.06.17"  此时.replace("-",".")只是把第一个&

mysql concat update中拼接字符串

mysql> select id,avatar from tf_user; +----+--------------+ | id | avatar | +----+--------------+ | 1 | avatar_1.png | | 2 | avatar_6.png | | 3 | avatar_1.png | | 4 | avatar_5.png | | 5 | avatar_5.png | | 6 | avatar_4.png | | 7 | avatar_6.png | | 8 |