omn​​ifaces突出显示组件无法使用richfaces 4 bean验证

时间:2015-07-09 01:36:25

标签: jsf richfaces omnifaces

我对版本1.11的omnifaces有maven依赖(因为我的目标是JDK 1.6)。 Richfaces 4.5.6 final,myfaces 2.2.8。而且,对于一个有视图的bean,我有这个xhtml:

<ui:define name="content">

        <f:loadBundle basename="au.com.erb.facility.ui.facility"
            var="property" />
        <o:highlight styleClass="error" />
        <h:panelGrid columns="2">
            <rich:validator event="change">
                <o:outputLabel value="#{property.absClientNumber}" for="input1" />
                <h:inputText id="input1"
                    value="#{facilityBean.facilityForEdit.alternateKey.absClientNumber}"
                    label="ABS Client Number" />

                <o:outputLabel value="#{property.facilityid}" />
                <h:inputText
                    value="#{facilityBean.facilityForEdit.alternateKey.facilityId}"
                    label="Facility Id" />

                <h:outputLabel value="#{property.rfsAccountGroup}" />
                <h:inputText value="#{facilityBean.facilityForEdit.rfsAccountGroup}"
                    label="RFS Account Group" />

                <h:outputLabel value="#{property.rfsAcctCustomerNumber}" />
                <h:inputText
                    value="#{facilityBean.facilityForEdit.rfsAcctCustomerNumber}"
                    label="RFS Account Customer Number" />

                <h:outputLabel value="#{property.rfsAcctLedger}" />
                <h:inputText value="#{facilityBean.facilityForEdit.rfsAcctLedger}"
                    label="RFS Account Ledger" />
            </rich:validator>

        </h:panelGrid>

    </ui:define>
    <!-- Buttons that performs actions on a selected record -->
    <!-- or navigate to a relevant screen -->
    <ui:define name="buttons">
        <h:commandButton id="submitButton" value="#{property.submitLabel}"
            action="#{facilityBean.save}" styleClass="wideButton"
            onclick="#{rich:component('progressWaitModalPanel')}.show()" />
        <h:commandButton id="closeButton" value="#{property.closeLabel}"
            action="#{facilityBean.close}" styleClass="wideButton"
            immediate="true" />

        <rich:popupPanel id="progressWaitModalPanel" modal="true">
            <f:facet name="header">
                <h:outputText value="Processing your request ...." />
            </f:facet>
            <h:panelGrid columns="1"
                style="width: 100%; border-width: 0px; text-align: center;">
                <h:outputText value="Please wait..." styleClass="dataValueStyle" />
            </h:panelGrid>
        </rich:popupPanel>
    </ui:define>

结果一无所获。没有高光。不知道发生了什么。我错过了任何安装步骤吗?我有css和xmlnamespace。还有什么吗?

我试图在示例中显示添加required =“true”,但这也不起作用。不确定是否是由于richfaces bean验证问题。

1 个答案:

答案 0 :(得分:2)

<o:highlight>工作服务器端,基于a.o. JSF组件树中的UIInput#isValid()<rich:validator>在客户端工作,不操作JSF组件树。

这确实不顺利。

我简要地查看了<rich:validator> showcase的HTML / JS代码,看来当它们无效时(例如PrimeFaces),它们不会向输入元素添加标记样式类,因此,在继续<rich:validator>方法时,要编写一个变通方法很难。

您基本上遵循以下选项:

  1. Maunally编写一个oncomplete脚本,找到验证错误消息,然后找到相关的输入,然后在其上设置所需的标记样式类。

  2. 向RichFaces人员报告问题,并要求他们通过<rich:validator>向无效输入添加标记样式类,以便您可以单独设置样式。

  3. 删除<rich:validator>并通过<f:ajax>通过服务器端验证替换它。