[英]Ajax event for composite component not firing
我创建了一个复合组件,其中包含一个简单的素数inputText并附加了一些验证。
为了给这个组合添加ajax事件,我定义了一个composite:clientBehaviour,如下所示:
<composite:interface>
<composite:attribute name="value" type="java.lang.String" />
<composite:attribute name="update" type="java.lang.String" />
<composite:editableValueHolder name="ipAddressInput" targets="#{cc.clientId}:ipAddressInput" />
<composite:clientBehavior name="update" targets="#{cc.clientId}:ipAddressInput" event="blur" />
</composite:interface>
<composite:implementation>
<p:inputText placeholder="xxx.xxx.xxx.xxx" id="ipAddressInput" value="#{cc.attrs.value}" validatorMessage="Invalid IPV4 Address">
<p:keyFilter regEx="/[0-9.]/i" />
<f:validator validatorId="com.db.nms.app.netappls.validation.faces.IpV4Validator" />
</p:inputText>
</composite:implementation>
当我将此复合添加到页面并定义ajax事件时:
<netappls:ipV4Input id="ipInputCC" value="#{addInterfaceIpDialogBean.addressForm.ipAddress}">
<p:ajax update="maskInput" listener="#{addInterfaceIpDialogBean.onUpdateIp}" />
</netappls:ipV4Input>
不会在模糊时调用侦听器。 只需将inputText复制到我使用复合函数的位置,然后定义ajax事件,就像将调用侦听器一样。
我也尝试设置不同的过程并更新ajax元素上的过滤器。 没事。 当我将imediate =“ true”添加到ajax元素时,它将触发但该值不会更新。
我的第一个想法是,它与验证程序有关。 但是,删除验证器也不会更改任何内容。
知道我在做什么错吗?
该复合材料将在使用primefaces对话框框架的对话框页面中使用。
您在Composite:clientBehavior和输入ID中具有不同的ID映射。 尝试统一它们:
<composite:clientBehavior name="update" targets="ipAddressInput" event="blur" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.