InputDialogFacet
操作
参阅 actions。
参数
如需在对话框内添加输入控件,可以在 parameters
元素中创建下列子元素。框架会为每个参数创建对应的 可视化组件,用于输入。
参数 | 可视化组件 |
---|---|
|
TextField 文本框, |
|
DateField 日期时间, |
|
DateField 日期时间, |
|
TextField 文本框, |
|
TextField 文本框, |
|
TextField 文本框, |
|
|
|
上面列举的所有参数都有 defaultValue
属性,支持为对应的控件设置默认值。
<parameters>
<bigDecimalParameter id="bigDecimalParameter"
caption="Big Decimal Parameter"
defaultValue="55.753"
required="false"/>
</parameters>
-
用
entityParameter
展示 EntityPicker 实体选择器。如需为控件定义实体类,使用entityClass
属性。<parameters> <entityParameter caption="Entity Parameter" entityClass="ui.ex1.entity.City" id="entityParameter" required="true"/> </parameters>
-
用
enumParameter
展示 ComboBox 下拉列表。如需为控件定义枚举类,使用enumClass
属性。<parameters> <enumParameter caption="Enum Parameter" enumClass="ui.ex1.entity.Hobby" id="enumParameter"/> </parameters>
事件和处理器
如需使用 Jmix Studio 生成处理器的桩代码,需要在界面 XML 描述或者 Jmix UI 层级结构面板选中 facet 元素,然后用 Jmix UI 组件面板的 Handlers 标签页生成。 或者可以使用界面控制器顶部面板的 Generate Handler 按钮。 |
InputDialogCloseEvent
InputDialogCloseEvent
在对话框关闭后发送。使用 InputDialogCloseEvent.closedWith()
方法,可以跟踪窗口是如何关闭的:
@Autowired
private Notifications notifications;
@Subscribe("inputDialog")
public void onInputDialogInputDialogClose(InputDialog.InputDialogCloseEvent event) {
if (event.closedWith(DialogOutcome.OK)) {
notifications.create()
.withCaption("The order will be displayed in your profile within 5 minutes")
.show();
}
}
如需以编程的方式注册事件处理器,使用 addCloseListener()
方法。
DialogResultHandler
DialogResultHandler
代理方法支持处理输入对话框的结果:
@Autowired
private Notifications notifications;
@Install(to = "inputDialog", subject = "dialogResultHandler")
private void inputDialogDialogResultHandler(InputDialog.InputDialogResult inputDialogResult) {
String closeActionType = inputDialogResult.getCloseActionType().name();
String values = inputDialogResult.getValues().entrySet()
.stream()
.map(entry -> String.format("%s = %s", entry.getKey(), entry.getValue()))
.collect(Collectors.joining(", "));
notifications.create(Notifications.NotificationType.HUMANIZED)
.withCaption("InputDialog Result Handler")
.withDescription("Close Action: " + closeActionType +
". Values: " + values)
.show();
}
编程式用法,调用 setDialogResultHandler()
方法。
Validator
Validator
代理方法支持验证输入值。接收特定的 InputDialog.ValidationContext
,其中包含输入的值。方法需要返回 ValidationErrors
实例,描述错误信息。错误会与其他验证异常一起在通知窗口展示。
@Install(to = "inputDialog", subject = "validator")
private ValidationErrors inputDialogValidator(InputDialog.ValidationContext validationContext) {
String phone = validationContext.getValue("phoneField");
String address = validationContext.getValue("addressField");
if (Strings.isNullOrEmpty(phone) && Strings.isNullOrEmpty(address)) {
return ValidationErrors.of("Phone or Address must be filled");
}
return ValidationErrors.none();
}
编程式用法,调用 setValidator()
方法。