jsf 2.0表达式语言括号不起作用

时间:2011-03-14 12:43:38

标签: java jsf jsf-2 jstl el

我的h:commandButton

中有这个属性
disabled="#{ not ( ( nodeChild.children == null or empty nodeChild.children ) and ( not setupManager.currentTerminals ) ) }"

如果它呈现disabled="false"一切正常但另一个则抛出此异常

SEVERE: javax.faces.FacesException: java.lang.IllegalArgumentException: Cannot convert [] of type class java.util.ArrayList to class java.lang.Boolean

写上述条件的最佳方法是什么? 我可以使用括号吗?

1 个答案:

答案 0 :(得分:5)

#{setupManager.currentTerminals}显然正在返回ArrayList,因此表达式#{not setupManager.currentTerminals}将失败,因为它不是Boolean。使用not empty代替not。这是重写(注意empty也涵盖null,您之前不需要进行空检查。)

disabled="#{not empty nodeChild.children and not empty setupManager.currentTerminals}"