最近,在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方法
答案 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')}">