EL中的字符串连接[重复]

Posted

技术标签:

【中文标题】EL中的字符串连接[重复]【英文标题】:String Concatenation in EL [duplicate] 【发布时间】:2011-04-08 02:28:23 【问题描述】:

我想在 EL(表达式语言)的三元运算符中连接一个字符串。

假设有一个名为 value 的变量。如果它是空的,我想使用一些默认文本。否则,我需要在其上附加一些静态文本。

$(empty value)? "none" : value + " enabled"

但是这不会编译。写这个的正确方法是什么?或者这甚至可能吗?

【问题讨论】:

【参考方案1】:

如果您已经使用 EL 3.0(Java EE 7;WildFly、Tomcat 8、GlassFish 4 等),那么您可以为此使用新的 += 运算符:

<c:out value="$empty value ? 'none' : value += ' enabled'" />

如果您还没有使用 EL 3.0,并且 value 是真正的 java.lang.String 实例(因此不是 java.lang.Long),那么请使用 EL 2.2(Java EE 7;JBoss AS 6/7 、Tomcat 7、GlassFish 3 等)使用参数调用直接方法的能力,然后您将其应用于 String#concat()

<c:out value="$empty value ? 'none' : value.concat(' enabled')" />

或者,如果您还没有使用 EL 2.2,那么使用 JSTL &lt;c:set&gt; 创建一个新的 EL 变量,其中连接的值刚刚内联在值中:

<c:set var="enabled" value="$value enabled" />
<c:out value="$empty value ? 'none' : enabled" />

【讨论】:

上述+= 方法是目前为止最正确的解决方案。谢谢!【参考方案2】:

使用 concat 来解决 EL + MAP + JSON 问题也是一个好主意,就像在这个例子中一样:

#myMap[''.concat(myid)].content

【讨论】:

【参考方案3】:

这个答案已经过时了。技术已经向前发展。除非您使用的是旧系统,否则请参阅 Joel's answer。


EL 中没有字符串连接运算符。如果您不需要将连接的字符串传递给其他操作,只需将这些表达式放在一起即可:

$value$(empty value)? 'none' : ' enabled'

【讨论】:

【参考方案4】:

Mc Dowell's answer 是对的。如果您可能需要将变量的值返回为:

$ empty variable ? '<variable is empty>' : variable 

【讨论】:

【参考方案5】:

从表达式语言 3.0 开始,使用 += 运算符进行字符串连接是有效的。

$(empty value)? "none" : value += " enabled"  // valid as of EL 3.0

引用EL 3.0 Specification。

字符串连接运算符

评估

A += B 
将 A 和 B 强制转换为字符串。 返回 A 和 B 的连接字符串。

【讨论】:

【参考方案6】:

使用 EL 2,您可以执行以下操作:

#'this'.concat(' is').concat(' a').concat(' test!')

【讨论】:

$'this'.concat(' is').concat(' a').concat(' test!') 将是正常形式。 这是否适用于非字符串类型,例如$'I am'.concat(' number ').concat(1).concat('!')? @MartinCarney concat() 只支持字符串参数 调用非getter方法需要EL 2.2(见How can I check what version of EL is server using) @Joel 不会 Java 将 String.concat() 的(非字符串)参数强制转换为 String 自动调用其 toString() 方法?【参考方案7】:

1.+(操作符)对EL的使用没有影响。 2.so this is the way, to use that

<c:set var="enabled" value="$value enabled" />


<c:out value="$empty value ? 'none' : enabled" />

这对你有帮助吗?

【讨论】:

为代码块缩进四个空格并使用反引号字符来转义尖括号。 ***.com/editing-help 与 BalusC 完全相同的解决方案,但要晚一天?嗯……

以上是关于EL中的字符串连接[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 JSF/JSP EL 和 Javascript 中连接字符串 [重复]

将字符串与MySQL中的字段值连接[重复]

Oracle 10g 中的聚合字符串连接 [重复]

C ++和Java中的字符串连接复杂性[重复]

C ++中的字符串和int连接[重复]

连接 ESP-idf 中的两个字符串 [重复]