我想通过 Javascript 填充 Primefaces inputText 字段,然后触发更改事件。根据我对 inputText 小部件文档的理解, callBehavior 函数将是正确的方法。
所以我的领域看起来像这样:
<p:inputText id="myInput" value="#{myBean.value}">
<p:ajax event="change" update="@this" onstart="console.log('Change triggered')" />
</p:inputText>
我的 JS 函数看起来像这样
function myFun() {
const theId = // Have to get the id dynamically
const inputWdgt = PrimeFaces.getWidgetById(theId);
inputWdgt.jq.val('My new value');
inputWdgt.callBehavior('change');
}
但是结果既没有打印onstart中的日志,也没有执行更新。
在我进一步的调查中,我发现浏览器中的 cfg 对象不包含任何行为。因此,很明显,callBehavior 没有效果(因为该函数与这些相关)。 所以问题是,为什么没有为小部件定义行为?
这是一个错误。不敢相信没有人报告过这一点。
错误:https://github.com/primefaces/primefaces/issues/12887
公关:https://github.com/primefaces/primefaces/pull/12888
它将在 PF 14.0.8+ 中修复