我对版本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验证问题。
答案 0 :(得分:2)
<o:highlight>
工作服务器端,基于a.o. JSF组件树中的UIInput#isValid()
。 <rich:validator>
在客户端工作,不操作JSF组件树。
这确实不顺利。
我简要地查看了<rich:validator>
showcase的HTML / JS代码,看来当它们无效时(例如PrimeFaces),它们不会向输入元素添加标记样式类,因此,在继续<rich:validator>
方法时,要编写一个变通方法很难。
您基本上遵循以下选项:
Maunally编写一个oncomplete
脚本,找到验证错误消息,然后找到相关的输入,然后在其上设置所需的标记样式类。
向RichFaces人员报告问题,并要求他们通过<rich:validator>
向无效输入添加标记样式类,以便您可以单独设置样式。
删除<rich:validator>
并通过<f:ajax>
通过服务器端验证替换它。