我有<p:inputText>
嵌套<p:ajax event="change" listener="myValidate">
和<p:commandButton actionListener="myValidate" process="@form">
。
问题是, myValidate 方法被调用两次,因为按下commandButton会首先触发onChange-Event(在单击CommandBt之前编辑文本时)然后调用< em> myValidate 方法。之后,CommandButton actionListener将调用 myValidate 。
如何阻止双重通话?
我需要的是:
thanx提前获得帮助。
答案 0 :(得分:0)
如果您指定update
和process
,则会调用ajax请求onBlur
(当字段失去焦点时):
<p:inputText>
<p:ajax event="change" listener="myValidate" update="myForm" process="@form">
</p:inputText>
但请注意,如果输入失去焦点的方式是您单击命令按钮,那么将会有2个后续的AJAX调用。这是因为第一个是由javascript onBlur
事件触发的,第二个是由按钮上的onClick
事件触发的。但是,在这种情况下仅(如果您先进入另一个字段,它将按预期工作)。
通常的解决方案是坚持使用JSF模型并在提交时验证整个表单,而不是在离开它时的每个字段。