Eclipse 对 JSF 文件中的 EL 表达式给出了太多错误和警告
Eclipse gives too many false errors and warnings on EL expressions in JSF files
我 运行 遇到了一个奇怪的情况。我有一个应用程序,它最初是在 RAD 中开发的,并使用了类似
的结构
rendered="#{bean.show and user.can('foo')}"
我们的开发人员混合使用 RAD 和 Eclipse Juno/Kepler。所以我们需要让代码在两种环境下都能正常工作。
在 RAD 中,以上行不会产生任何错误。当我将项目导出为存档并将其导入 Eclipse Juno 时,它会生成此错误
Cannot apply expression operators to method bindings
我们的环境是 Websphere 8.5、RAD/Eclipse、JSF 2.1
我该如何解决这个问题?
一般来说,如果您在 Eclipse 中的 JSF 文件中遇到错误的 EL 验证错误,请尝试在 Window > 首选项 > Web > JavaServer Faces 工具 > 验证中查看 并调整当前(不必要地)设置在 Error.
的一些设置
您的特定问题是由“将运算符应用于方法绑定”触发的,它确实默认为 Error。如果无法将 Eclipse 升级到最新版本,将其设置回 Warning 应该会降低它的音量。
毕竟,Eclipse 中的 EL 验证是一个史诗般的失败。它似乎使用正则表达式来验证 EL 语法,而不是像 EL 本身那样使用真正的基于堆栈的解析器。 “类型强制问题”和“类型分配问题”下面有几个条目被不必要地设置为 Error 并且已知会导致假错误。
另请参阅:
- Method must have signature "String method() ...[etc]..." but has signature "void method()"
我对这些陈述中的任何一个都犯了同样的错误:
<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'}">
我 运行 遇到了一个奇怪的情况。我有一个应用程序,它最初是在 RAD 中开发的,并使用了类似
的结构rendered="#{bean.show and user.can('foo')}"
我们的开发人员混合使用 RAD 和 Eclipse Juno/Kepler。所以我们需要让代码在两种环境下都能正常工作。
在 RAD 中,以上行不会产生任何错误。当我将项目导出为存档并将其导入 Eclipse Juno 时,它会生成此错误
Cannot apply expression operators to method bindings
我们的环境是 Websphere 8.5、RAD/Eclipse、JSF 2.1
我该如何解决这个问题?
一般来说,如果您在 Eclipse 中的 JSF 文件中遇到错误的 EL 验证错误,请尝试在 Window > 首选项 > Web > JavaServer Faces 工具 > 验证中查看 并调整当前(不必要地)设置在 Error.
的一些设置您的特定问题是由“将运算符应用于方法绑定”触发的,它确实默认为 Error。如果无法将 Eclipse 升级到最新版本,将其设置回 Warning 应该会降低它的音量。
毕竟,Eclipse 中的 EL 验证是一个史诗般的失败。它似乎使用正则表达式来验证 EL 语法,而不是像 EL 本身那样使用真正的基于堆栈的解析器。 “类型强制问题”和“类型分配问题”下面有几个条目被不必要地设置为 Error 并且已知会导致假错误。
另请参阅:
- Method must have signature "String method() ...[etc]..." but has signature "void method()"
我对这些陈述中的任何一个都犯了同样的错误:
<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'}">