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

时间:2015-09-18 13:24:45

标签: javascript java jsf primefaces

我在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似乎无法识别此更改。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

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

<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();"/>

它工作正常。

答案 1 :(得分:3)

当用户使用鼠标指针离开单元格时,为<p:inputText> onmouseout事件提供额外的保存值: <p:ajax event="mouseout" process="@this" partialSubmit="true"/>

答案 2 :(得分:0)

以下适用于Firefox,但不适用于Chrome。 因此,如果您找到更好的解决方案,请在此处分享。

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

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