【问题标题】:JSF component objectJSF 组件对象
【发布时间】:2014-04-06 03:19:48
【问题描述】:

互联网上有很多使用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(它没有)。

知道为什么会有 UI 面板吗? (Java EE 6、JSF 2.1、Weblogic 12.1.2)

【问题讨论】:

  • 您使用的是什么版本的 JSF? component 隐式对象在我的版本 (2.2) 中没有 valid 属性
  • 现在我使用 JSF 2.1。我见过它,例如here.
  • componentdoes not have a valid attribute。我不知道您链接的答案在说什么,但 API 中没有任何内容可以支持它
  • 你是对的,但是看看BalusC explanation >> 组件的#{component} 指的是 UIInput 类的一个实例,它又具有一个 isValid() 方法.
  • 好的。你有文章和 API。任君挑选。

标签: jsf-2 java-ee-6


【解决方案1】:

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

您应该正在检索facesContext 隐式 EL 对象上的请求状态

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

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

参考:

【讨论】:

    猜你喜欢
    • 2014-07-22
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2023-03-24
    • 2013-03-09
    • 2017-07-17
    相关资源
    最近更新 更多