JSF 组件对象



互联网上有很多教程,其中使用了JSF页面上的组件对象。通常使用 component.clientId 或 component.valid。例

<h:inputText .... styleClass="#{component.valid ? '' : 'ui-input-invalid'}"/>

如果我使用这样的组件创建页面,我会收到一个错误:

javax.el.PropertyNotFoundException: 
The class 'javax.faces.component.UIPanel' does not have the property 'valid'.

我用谷歌搜索了inputText应该有UIInput类(它有isValid方法),但我有UIPanel(dasn't)。

知道为什么会有UI面板吗?(Java EE 6, JSF 2.1, Weblogic 12.1.2)

从长远来看,

单个组件是否有效无关紧要;整个请求将被标记为无效,即使它是由于单个组件的失败。

您应该检索facesContext隐式 EL 对象上的请求状态

<h:inputText .... styleClass="#{facesContext.validationFailed ? '' : 'ui-input-invalid'}"/>

我在 2.1 或 2.2 API 中看到的任何内容都不支持component隐式 EL 对象的 valid 属性的存在。这是javax.faces.component.UIComponent的实现

参考:

  • UIComponent Javadoc

最新更新