我创建了一个复合组件,其中包含一个简单的素数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对话框框架的对话框页面中使用。
答案 0 :(得分:0)
您在Composite:clientBehavior和输入ID中具有不同的ID映射。尝试统一它们:
<composite:clientBehavior name="update" targets="ipAddressInput" event="blur" />