抑制古巴平台中未保存的更改消息

Suppress unsaved changes message in Cuba Platform

我有一个包含作者的查找屏幕,我通过使用来自 AuthorsBrowse::AbstractLookup 的 init 中的自定义查询来加载数据。我操作了我要显示的数据,但更改不应该被保存。

如果我关闭选项卡,我会收到此消息对话框:

您有未保存的更改 您要放弃未保存的更改吗?

我怎样才能禁止这条消息?

如果更改了任何数据源,则会出现此消息。

如果你想抑制消息,你需要添加到数据源(已更改)属性 allowCommit="false",像这样:

<collectionDatasource id="authorsDs"
                      class="com.haulmont.workshop.core.entity.Author"
                      view="_local"  allowCommit="false">
    <query>
        <![CDATA[
        select e from ws$Author e where e.status = 10
        ]]>
    </query>
</collectionDatasource>

如果屏幕实现了 Window.Committable 接口,您还可以对屏幕的未保存更改行为进行更细粒度的控制。该接口包含 isModified() 方法,其中 return 是一个布尔值。

AbstractEditor 已经实现了这个接口,它的 isModified() 看起来如下:

@Override
public boolean isModified() {
    return getDsContext() != null && getDsContext().isModified();
}

您可以在浏览器屏幕中实现 Window.Committable 并且只是 return false 或在 isModified() 中编写一些逻辑。