我在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似乎无法识别此更改。
有什么想法吗?
答案 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);
}