互联网上有很多教程,其中使用了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