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>
方法时很难编写解决方案。
您基本上有以下选项:
-
手动编写一个
oncomplete
脚本,该脚本查找验证错误消息,然后找到相关的输入,然后在其上设置所需的标记样式类。 -
向RichFaces报告一个问题,并要求他们通过
<rich:validator>
添加一个标记样式类来无效输入,这样你就可以单独设置它们的样式。 -
删除
<rich:validator>
并替换为通过<f:ajax>
进行服务器端验证