在单元格外部单击时,将文本保存在p:cellEditor > p:inputTextarea内可以完美地实现onblur
但是,单击来自p:cellEditor > p:inputTextarea的链接(例如commandButton,commandLink)时,它不会预先执行p:ajax cellEdit事件。而是执行单击的链接。

这是不正确的,因为它适用于没有p:inputTextareap: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>

09-16 12:09