视图验证
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
键值定义的。可以在项目的消息包中通过这个键值定义自己需要的标题。示例:
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" 按钮的文本
可以在项目的消息包中通过这些键值定义自己需要的内容。示例:
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
- 消息内容
可以在项目的消息包中通过这些键值定义自己需要的内容。示例:
dialogs.closeUnsaved.title = 您有改动还没有保存
dialogs.closeUnsaved.message = 确认丢弃数据?