视图验证

UI 视图中的数据验证通过 ViewValidation bean 实现。其中的方法可用于验证 UI 组件、显示验证错误消息、提示未保存数据对话框。框架和扩展组件中的视图和对话框都使用了这个 bean。你的项目中也能使用。

下面我们介绍 ViewValidation bean 中的一些主要方法。

validateUiComponents

validateUiComponents() 方法可以使用页面组件集合或组件容器作为参数。该方法会对所有实现了 SupportsValidation 接口的组件进行验证,并返回 ValidationErrors 对象,其中包含验证错误信息。

视图中使用的示例:

public class SampleView extends StandardView {

    @Autowired
    private ViewValidation viewValidation;

    @ViewComponent
    private FormLayout form;

    @Subscribe("validateBtn")
    public void onValidateBtnClick(final ClickEvent<JmixButton> event) {
        ValidationErrors errors = viewValidation.validateUiComponents(form);
        if (!errors.isEmpty()) {
            viewValidation.showValidationErrors(errors);
        }
    }
}

showValidationErrors

showValidationErrors() 方法可以展示一个带有验证错误消息的通知。参考上面的示例。

通知的标题是通过 validationFail.title 键值定义的。可以在项目的消息包中通过这个键值定义自己需要的标题。示例:

messages_en.properties
validationFail.title = Validation failed

showSaveConfirmationDialog

showSaveConfirmationDialog() 方法展示是否保存页面改动的一个确认对话框。在 jmix.ui.view.use-save-confirmation 配置为 true 时(默认配置),实体详情视图 会在检测到用户关闭页面而未保存数据时使用该方法。

该对话框使用下列消息键值:

  • dialogs.closeUnsaved.title - 对话框标题

  • dialogs.saveUnsaved.message - 消息内容

  • dialogs.closeUnsaved.save - "save" 按钮的文本

  • dialogs.closeUnsaved.discard - "discard" 按钮的文本

可以在项目的消息包中通过这些键值定义自己需要的内容。示例:

messages_zh_CN.properties
dialogs.closeUnsaved.title = 您有改动还没有保存
dialogs.saveUnsaved.message = 需要保存吗?
dialogs.closeUnsaved.save = 保存
dialogs.closeUnsaved.discard = 不需要

showUnsavedChangesDialog

showSaveConfirmationDialog() 方法展示是否放弃页面改动的一个确认对话框。在 jmix.ui.view.use-save-confirmation 配置为 false 时,实体详情视图 会在检测到用户关闭页面而未保存数据时使用该方法。

该对话框使用下列消息键值:

  • dialogs.closeUnsaved.title - 对话框标题

  • dialogs.closeUnsaved.message - 消息内容

可以在项目的消息包中通过这些键值定义自己需要的内容。示例:

messages_zh_CN.properties
dialogs.closeUnsaved.title = 您有改动还没有保存
dialogs.closeUnsaved.message = 确认丢弃数据?