互联网上有许多教程,使用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'.
我googled说,对于inputText应该有UIInput类(它有isValid方法),但我有UIPanel(没有)。
任何想法为什么有UI面板? (Java EE 6,JSF 2.1,Weblogic 12.1.2)
答案 0 :(得分:0)
从长远来看,单个组件是否有效无关紧要;整个请求将被标记为无效,即使它是由于单个组件的故障。
您应该在facesContext
隐式EL对象
<h:inputText .... styleClass="#{facesContext.validationFailed ? '' : 'ui-input-invalid'}"/>
我在2.1或2.2 API中看到的任何内容都不支持valid
隐式EL对象存在component
属性。这是javax.faces.component.UIComponent
参考: