如何致富:使用f:ajax的消息
我一直在搜索并找到诸如link之类的东西,但我已经在f:ajax中调用了ID 我试图验证来自第一个代码块的输入是否为整数;该字段还通过一个布尔复选框查看,该复选框允许用户选中一个复选框,并将数据复制到表单的其他部分。如果我删除f:ajax,我可以从第一个代码块获得要复制到第三个代码块的值,也可以从第一个代码块获得要验证的值,但是我无法使用rich:message验证来处理f:ajax调用,尽管使用了ID并且它位于一个面板组中。我做错了什么 正在尝试验证:如何致富:使用f:ajax的消息,ajax,validation,richfaces,ajax4jsf,Ajax,Validation,Richfaces,Ajax4jsf,我一直在搜索并找到诸如link之类的东西,但我已经在f:ajax中调用了ID 我试图验证来自第一个代码块的输入是否为整数;该字段还通过一个布尔复选框查看,该复选框允许用户选中一个复选框,并将数据复制到表单的其他部分。如果我删除f:ajax,我可以从第一个代码块获得要复制到第三个代码块的值,也可以从第一个代码块获得要验证的值,但是我无法使用rich:message验证来处理f:ajax调用,尽管使用了ID并且它位于一个面板组中。我做错了什么 正在尝试验证: <h:outputLabel fo
<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">
啊,好的。您使用的是
@ajaxprendered=“true”
,这意味着消息必须由某个ajax操作呈现
您可以在
中使用@render
(消息必须有id)
或者您可以使用
(属性相同)来自动重新发送消息。或者您不能使用@ajaxRendered
还请注意,
change
事件不会在您更改输入值时触发,而是在输入失去焦点后触发。如果要在键入时验证输入,应使用keyup
为什么要尝试重新输入正在验证的输入?编辑:还有,你必须使用f:ajax
?老实说,这是我的第一个web应用程序,所以我不一定知道我为什么要在那里使用它。我只是在我的代码(第一个代码块)中删除了它,复制仍然有效,但验证仍然不起作用。我不一定需要使用一种或另一种技术,我只需要它工作。技术要求灵活,但功能要求不灵活。你有其他建议吗?谢谢,我会尝试一下,如果我能让它工作的话,会告诉你的。我使用了f:ajax和messageid路由,它也能工作。非常感谢你。
<f:ajax … render="message" />
<rich:message id="message" … />