在我的UI中,有些项目已经过编辑。在此编辑UI中,用户可以切换到下一个或上一个项目。如果用户更改了项目的值(保存在javascript中),我想要显示一个对话框,要求保存并提供“是”,“否”和“取消”操作。
以下是下一个项目链接的示例代码:
<p:commandLink ajax="true" action="#{editPropertyBL.nextItem()}" onstart="handleDocNavigation();" process="@this" immediate="true" />
使用Javascript:
function handleDocNavigation() {
if (valueInEditChanged == true) {
PF('valueChangedEditDialogVar').show();
}
}
<p:dialog id="valueChangedEditDialogId" widgetVar="valueChangedEditDialogVar" modal="true">
<h:outputText value="Save changes?" />
<f:facet name="footer">
<h:panelGroup>
<p:commandButton value="Yes" ...??? />
<p:commandButton value="No" ...??? />
<p:commandButton value="Cancel" oncomplete="PF('valueChangedEditDialogVar').hide(); return false;" />
</h:panelGroup>
</f:facet>
当用户在当前“脏”项目上保留的确认对话框中单击“取消”时,应阻止调用editPropertyBL.nextItem()方法。 当用户单击“是”时,必须调用保存操作(从确认对话框中),然后切换到下一个项目。通过“取消”,它将切换到下一个项目。
问题是当模态确认对话框出现时,在单击对话框的三个按钮之一之前切换项目。我试验了返回假而没有成功。 知道怎么做吗?我认为这是常见的要求,但还没有找到一个例子。 我认为primefaces确认Dialog不适合我的情况。 可能remoteCommand可能是一个解决方案?我希望有一种更优雅的方式。
此致 奥利弗