【问题标题】:JSF 2.0 checking by EL if components are valid inside composite componentJSF 2.0 通过 EL 检查组件是否在复合组件内有效
【发布时间】:2012-07-15 01:24:34
【问题描述】:

有一个我想在我的 JSF 复合组件中实现的示例:

<h:inputText id="name" value="#{cc.attrs.value.name}" styleClass="#{(component.valid) ? 'required' : 'required invalid'}" validatorMessage="bad name" requiredMessage="name required" immediate="true" required="true">
    <f:validateRegex pattern="^[\p{L}' ]{2,19}$" />
    <f:ajax event="blur" execute="name" render="name testPanel" immediate="true"/>
</h:inputText>

<h:inputText id="surname" value="#{cc.attrs.value.surname}" styleClass="#{(component.valid) ? 'required' : 'required invalid'}" validatorMessage="bad surname" requiredMessage="surname required" immediate="true" required="true">
    <f:validateRegex pattern="^[\p{L}' ]{2,19}$" />
    <f:ajax event="blur" execute="name" render="surname testPanel" immediate="true"/>
</h:inputText>

<h:panelGroup id="testPanel" styleClass="#{(!name.valid || !surname.valid) ? 'warning' : 'none'}">
    <h:message id="msgName" for="name" showSummary="true" showDetail="false" />
    <h:message id="msgSurname" for="surname" showSummary="true" showDetail="false" />
</h:panelGroup>

问题是如何在“testPanel”评估姓名或姓氏是否有效/无效。我希望消息 'msgName' 和 'msgSurname' 都用样式化跨度(html 输出)包装,如果没有针对 'name' 或 'surname' 的错误消息,这些跨度将不存在。

任何帮助表示赞赏:)

【问题讨论】:

    标签: java jsf-2


    【解决方案1】:

    使用binding属性将组件绑定到EL作用域:

    <h:inputText binding="#{name}" ... />
    <h:inputText binding="#{surname}" ... />
    

    这样您在styleClass 属性中的EL 尝试将起作用。

    【讨论】:

    • 了解:) 我想简单地添加设置绑定,因为如果您将多个复合组件放在视图中,绑定 =“#{name}”将不起作用。我通过将绑定设置为 #{cc.name} 来解决此问题(您还需要在组件的 UINamingcontainer 类中有适当的字段)
    猜你喜欢
    • 2013-10-19
    • 2014-03-07
    • 1970-01-01
    • 2011-06-02
    • 2016-06-12
    • 2020-03-07
    • 2011-11-09
    • 2013-02-02
    • 2016-09-11
    相关资源
    最近更新 更多