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

标签 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

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

最佳答案

#{setupManager.currentTerminals} 显然返回一个 ArrayList,因此表达式 #{not setupManager.currentTerminals} 将失败,因为它不是 boolean 值。使用 not empty 而不是 not。这是重写(请注意,empty 也涵盖 null,您之前不需要执行 nullcheck)。

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

关于java - jsf 2.0 表达式语言括号不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5298735/

相关文章:

javascript - 过滤后传递值为 0 - Primefaces

java - jsf 和 eclipse 设置。资源管理器中的库与 tomcat 中的库不同。怎么会?

java - 不重定向到托管 bean 中指定的新页面

Java 查找数组中的所有组合,这些组合加起来等于特定数字

java - SVM预测读取数据测试

java - 是否可以加密部分 faces-config 文件?

java - 命令按钮操作不适用于自定义标记

jsf - 包装 h :form tag in the jsf template page 是最佳实践吗

java - webdriver 中的页面滚动

java - Java 中的 I/O 通信 - 它属于 MVC 的哪一部分?