JSF组件对象

时间:2014-03-04 14:20:37

标签: jsf-2 java-ee-6

互联网上有许多教程,使用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)

1 个答案:

答案 0 :(得分:0)

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

您应该在facesContext隐式EL对象

上检索请求的状态
<h:inputText .... styleClass="#{facesContext.validationFailed ? '' : 'ui-input-invalid'}"/>

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

的实现

参考: