在单元格外部单击时,将文本保存在p:cellEditor > p:inputTextarea
内可以完美地实现onblur
。
但是,单击来自p:cellEditor > p:inputTextarea
的链接(例如commandButton,commandLink)时,它不会预先执行p:ajax
cellEdit
事件。而是执行单击的链接。
这是不正确的,因为它适用于没有p:inputTextarea
的p:cellEditor
。我意识到这也可能是Primefaces错误。任何想法如何解决这个问题?
<p:dataTable>
<p:ajax event="cellEdit" listener="#{bean.onCellEdit}" />
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{model.text}" />
</f:facet>
<f:facet name="input">
<p:inputTextarea value="#{model.text}" />
</f:facet>
</p:cellEditor>
<p:dataTable>
<p:commandButton actionListener="#{bean.someOtherAction}" />
我将该错误提交给Primefaces。但是通过javascript / jQuery是否有解决方法?
最佳答案
在Primefaces错误报告没有成功之后,我最终将侦听器直接连接到所有p:cellEditor
实例。看来可行,而且我也不会失去任何投入。
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{model.text}" />
</f:facet>
<f:facet name="input">
<p:inputTextarea value="#{model.text}">
<!-- this is the relevant line -->
<p:ajax listener="#{bean.onCellEdit}" global="false" update="@this" />
<!-- end relevant line -->
</p:inputTextarea>
</f:facet>
</p:cellEditor>