如果我不离开单元格/字段,Primefaces就不会识别单元格/字段的值

Primefaces doesn't recognize the value of the cell/field if I don't leave the cell/field.

本文关键字:字段 单元格 识别 不离 离开 如果 Primefaces      更新时间:2023-09-26

我在PrimeFaces中保存网格数据时遇到了这个问题。当我在单元格中设置值,然后改变另一个又一个单元格,点击这里和那里,然后我点击保存按钮,一切都很完美。但是,如果我没有退出单元格(更改焦点),而只是单击保存按钮,那么最后一个单元格的值就会丢失。

这是我的手机号码:

                        <p:cellEditor>
                            <f:facet name="output"><h:outputText style="text-transform: uppercase" value="#{bBean.someData}" /></f:facet>
                            <f:facet name="input">
                                <p:inputText style="text-transform: uppercase" value="#{bBean.someData}"  label="Some data">
                                </p:inputText>
                            </f:facet>
                        </p:cellEditor>

如果没有触发某个事件,看起来PrimeFaces无法识别更改。

任何想法?

给你的<p:inputText> onmouseout事件,你可以额外节省值,当用户离开细胞与鼠标指针:<p:ajax event="mouseout" process="@this" partialSubmit="true"/>

好的,现在我确定修复了:)我创建了一个隐藏按钮:

<p:commandButton process="@this" style="display:none !important" id="btn" value="SB"/>

和一个javascript函数,将模拟点击隐藏按钮:

function takefocus(){
                    $(PrimeFaces.escapeClientId('form:btn')).click();
                }

和我添加到保存按钮,之前调用save:

<p:commandButton value="Save" onclick="takefocus();PF('waitDialog').show();saveData();"/>

,它工作正常。

以下内容适用于Firefox,但不适用于Chrome。所以,如果你找到一个更好的解决方案,请在这里分享。

<p:inputText onblur="triggerChange(this)... />

function triggerChange(el) { var e = jQuery.Event('keydown'); e.which = 13; e.keyCode = 13; $(el).trigger(e); }