#{component.valid} 上的 Eclipse 错误:“无法将有效解析为组件成员”

Eclipse errors on #{component.valid}: "valid cannot be resolved as a member of component”

我在 JSF 页面中有以下代码:

<p:inputText ...
    styleClass="labelledInput-input #{component.valid?'':'validation-failed'}"/>

Eclipse 在 component.valid 部分产生如下错误:

valid cannot be resolved as a member of component

我该如何解决这个问题?

这是早于 Mars 的 Eclipse 版本中的一个已知问题。 Eclipse 不够聪明,无法确定 #{component} 在这种特殊情况下实际上引用了 UIInput 子类,并且一直错误地认为它是 UIComponent 超类,它确实没有 [=13] =] 属性。你基本上可以忽略'n'运行它。这是一个错误的错误,一切都应该正常工作。

如果您想摆脱虚假错误并且无法升级到 Mars,请转至 Window > 首选项 > Web > JavaServer Faces 工具 > 验证, 展开 Type Coercion Problems 并将 Unary operation boolean coercion problems 设置为 Ignore

出于礼貌从 this blog 借用的屏幕截图。

当你这样做的时候,也对一元运算数字强制问题做同样的事情。这应该可以防止在抽象超类中未定义的基于数字的属性上进行相同类型的 EL 操作时出现相同的错误。