Eclipse在JSF文件中的EL表达式上提供了太多错误和警告

时间:2015-02-19 12:01:28

标签: eclipse validation jsf el

我遇到了一个奇怪的情况。我有一个应用程序,最初在RAD中开发并使用像

这样的结构
rendered="#{bean.show and user.can('foo')}"

我们的开发人员使用RAD和Eclipse Juno / Kepler的混合体。因此,我们需要使代码在两种环境中都能正常工作。

在RAD中,上述行不会产生任何错误。当我将项目导出为存档并将其导入Eclipse Juno时,它会生成此错误

  

无法将表达式运算符应用于方法绑定

我们的环境是Websphere 8.5,RAD / Eclipse,JSF 2.1

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:16)

通常,如果您在Eclipse中的JSF文件中遇到错误的EL验证错误,请尝试在 Window>中查看。偏好>网络> JavaServer Faces工具>验证并调整当前(不必要地)设置为错误的一些设置。

enter image description here

您的特定问题是由"将运算符应用于方法绑定"确实默认为错误。如果将Eclipse升级到最新版本不是一个选项,将其设置回警告应该会降低它。

毕竟,Eclipse中的EL验证是一个非常史诗般的失败。似乎它使用正则表达式来验证EL语法,而不是像EL本身那样正确的基于堆栈的解析器。下面有几个条目"类型强制问题"和"类型分配问题"它们被不必要地设置为错误并且已知会导致错误。

另见:

答案 1 :(得分:2)

我对这些陈述都有同样的错误:
<h:panelGroup rendered="#{!bean.isValid(obj)}"> <h:panelGroup rendered="#{not bean.isValid(obj)}">

我通过更改声明解决了错误,如下所示:
<h:panelGroup rendered="#{bean.isValid(obj) == false}">

我找到了另一个解决问题的例子:
<ui:fragment rendered="#{bean.isValid(obj) eq 'false'}">