我一直在搜索并发现this链接等内容,但我已经在f:ajax中调用了ID。
我正在尝试将第一个代码块的输入验证为整数;此字段也通过布尔复选框查看,该复选框允许用户选中一个框,并将数据复制到表单的其他部分。我可以从第一个块中获取值复制到第三个,我可以从第一个代码块中获取值来验证我是否删除了f:ajax,但是我无法获得丰富的:消息验证以使用f :ajax调用,尽管使用了ID并且它在一个面板组中。我做错了什么?
尝试验证:
<h:outputLabel for="fireDrillStaffQuantity" value="Staff Quantity:"/>
<h:panelGroup>
<h:inputText id="fireDrillStaffQuantity" value="# {fireDrillBean.fireDrill.fireDrillStaffQuantity}" style="width: 175px;">
<f:ajax event="change" execute="@this" bypassUpdates="#{true}"/>
</h:inputText>
<rich:message for="fireDrillStaffQuantity" ajaxRendered="true"/>
</h:panelGroup>
<h:outputText value="*"/>
布尔复选框:
<h:outputLabel for="disasterDrillCopyTime" value="Use Fire Drill Data?"/>
<h:selectBooleanCheckbox value="#{fireDrillBean.copyTimes}" id="disasterDrillCopyTime">
<a4j:ajax event="change" execute="@this" render="disasterDrillStartTime,disasterDrillEndTime,disasterDrillStaffQuantity,disasterDrillStaffInitials,disasterDrillSupportedQuantity,disasterDrillSupportedInitials"/>
</h:selectBooleanCheckbox>
<h:outputText value=""/>
第一个块被复制到的字段:
<h:outputLabel for="disasterDrillStaffQuantity" value="Staff Quantity:"/>
<h:inputText id="disasterDrillStaffQuantity" value="#{fireDrillBean.fireDrill.disasterDrillStaffQuantity}" style="width: 175px;">
<a4j:ajax event="change" execute="@this" bypassUpdates="#{true}" render="disasterDrillStaffQuantity"/>
</h:inputText>
<h:outputText value="*"/>
在表单的其他部分,我可以使用a4j:ajax调用(下面)进行验证,但我不知道如何将其合并到已经使用f的项目中:ajax
<a4j:ajax event="blur" bypassUpdates="true" execute="@this" />
只是为了进行健全性检查,这是我的xhtml文件的标题:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:forgeview="http://jboss.org/forge/view"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:p="http://java.sun.com/jsf/html"
template="/resources/scaffold/pageTemplate.xhtml">
答案 0 :(得分:1)
啊,好的。您正在使用@ajaxRendered="true"
,这意味着必须通过某些ajax操作呈现消息。
您可以在@render
中使用<f:ajax>
(并且邮件必须包含ID)
<f:ajax … render="message" />
<rich:message id="message" … />
或者您可以使用<a4j:ajax>
代替(属性相同)自动重新呈现邮件。或者您无法使用@ajaxRendered
。
另请注意,更改输入值时不会触发change
事件,它会在输入失去焦点后触发。如果您希望输入在输入时进行验证,则应使用keyup
。