Omnifaces突出显示组件不能与richfaces 4 bean验证一起工作



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>

结果是什么都没有。没有higlight。不知道发生了什么。我是否错过了任何安装步骤?我已经准备好了css和xmlnamespace。还有别的事吗?

我尝试添加required="true",正如示例中所示,但这也不起作用。不确定是否由于richfaces bean验证问题

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

这确实不太合适。

我简要地研究了<rich:validator>展示的HTML/JS代码,似乎他们没有在输入元素无效时添加标记样式类(例如PrimeFaces),所以在继续<rich:validator>方法时很难编写解决方案。

您基本上有以下选项:

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

  2. 向RichFaces报告一个问题,并要求他们通过<rich:validator>添加一个标记样式类来无效输入,这样你就可以单独设置它们的样式。

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

相关内容

  • 没有找到相关文章

最新更新