2012-10-29 59 views
2

我可能对JSF表达式语言与javaScript的关系有错误的想法。 我想要做的是在JSF EL中在JS中嵌入一些JSF EL。它应该看起来像这样:嵌套JSF表达式语言和JavaScript

<h:commandLink onclick="#{ condition ? 'jsFunction('#{bean.property}delimiter#{bean.prop2}')' :''}" action="... 

显然这不起作用,所以如何在JSF EL中嵌入一些JSF EL在js中?

ps .:我知道我可以做两个命令链接并将条件移入“呈现”属性,但我想了解这个连接的关系。

回答

4

您不能嵌套EL表达式,也不能在EL表达式中连接字符串。通过使用}而不是)来关闭函数调用,您也会遇到JS语法错误。

<c:set>预先准备嵌套的表达,其中可以只内嵌在所得字符串值所需的表达:

<c:set var="jsFunction" value="jsFunction('#{bean.property}delimiter#{bean.prop2}')" /> 

这种方式可以只打印如下:

<h:commandLink ... onclick="#{condition ? jsFunction : ''}" /> 
+0

感谢澄清这一点。 JS语法错误是一个错字,而不是问题的一部分。 –