2014-03-04 33 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

參考的實現: