如何在EL中指定双引号字符串参数?

时间:2018-08-30 14:20:45

标签: string jsf el double-quotes

最近,在EL表达式中(使用#{},我尝试使用以下代码将用双引号分隔的String参数作为java方法的第一个参数传递

<p:panel style="border:none;#{vC.traceUpdate("p:panel")}">

但是此行被拒绝,因为双引号用于限制style修饰符和限制traceUpdate参数。

我找到了一个简单的解决方案,包括使用简单引号而不是双引号来限制style属性,如以下代码所示

<p:panel style='border:none;#{vC.traceUpdate("p:panel")}'>

但是如果第一个方法的参数类型为String而下一个参数的类型为char会发生什么,如下面的代码所示?

<p:panel style='border:none;#{vC.traceUpdate("p:panel",'X')}'>

在这种极端情况下,交换报价和​​双引号是不可能的。

我尝试遵循以下代码,但这被拒绝(在Intellij-Idea上以红色突出显示)并导致应用程序崩溃!

<p:panel style="border:none;#{vC.traceUpdate(\"p:panel\",'X')}">

我该如何解决这个问题?

这个问题不是重复的,因为我的问题明确地解释了该问题与双引号相关联……而我的问题是如何将字符串和Char传递给EL表达式中的java方法

1 个答案:

答案 0 :(得分:0)

我认为找到的最佳答案是使用BalusC在以下建议中使用的'<string>'.charAt(0) [Passing a Character (vs passing String) to backing bean method in EL

<p:panel style="border:none;#{vC.traceUpdate('p:panel','X'.charAt(0))}">

但是我尝试不使用charAt(0)技巧而直接使用简单引号...并且当参数类型为char时,此方法可以正常工作。

最佳解决方案

<p:panel style="border:none;#{vC.traceUpdate('p:panel','X')}">