2014-03-04 26 views
0

在互联网上有许多教程使用JSF页面上的组件对象。 通常使用component.clientId或component.valid。 例JSF组件对象

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

如果我创建这样的组件页,我得到一个错误:

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

我用Google搜索,对inputText的应该有UIInput类(具有的isValid方法),但我已经有UIPanel(不会)。

任何想法为什么有UI面板? (Java EE 6,JSF 2.1,Weblogic 12.1.2)

+0

您正在使用什么版本的JSF的? 'component'隐式对象在我的版本中没有'valid'属性(2.2) – kolossus

+0

现在我使用JSF 2.1。我见过它,例如[这里](http://stackoverflow.com/questions/11559460/how-to-get-validation-status-from-jsf-component)。 – kubo44

+0

'component' [**没有'valid'属性**](https://javaserverfaces.java.net/nonav/docs/2.1/javadocs/javax/faces/component/UIComponent.html)。我不知道你连接的答案是在说什么,但是API中没有任何东西可以备份它 – kolossus

回答

0

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

你应该是facesContext隐含EL对象检索请求的状态

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

没有我在2.1或2.2 API看到支持valid属性为的存在component隐式EL对象。这是javax.faces.component.UIComponent

参考的实现: