3.5.4.7. InputDialogFacet

InputDialogFacet facet 可以预配置 输入对话框。用声明式的方法定义输入对话框,而可以替代 Dialogs.createInputDialog() 方法。InputDialogFacet 用界面 xml 描述的 facets 元素定义。

组件的 xml 名称: inputDialog

示例:

<facets>
    <inputDialog id="inputDialogFacet"
                 caption="msg://inputDialog"
                 onAction="dialogAction">
        <parameters>
            <booleanParameter id="boolParam"
                              caption="msg://boolParam"
                              defaultValue="true"
                              required="true"/>
            <intParameter id="intParam"
                          caption="msg://intParam"
                          required="true"/>
            <entityParameter id="userParam"
                             caption="msg://userParam"
                             entityClass="com.haulmont.cuba.security.entity.User"
                             required="true"/>
        </parameters>
    </inputDialog>
</facets>

InputDialogFacet 配置的界面,也可以显式的调用 show() 方法展示:

@Inject
protected InputDialogFacet inputDialog;

@Subscribe("showDialog")
public void onShowDialogClick(Button.ClickEvent event) {
    inputDialog.show();
}

另外,这个 facet 还可以通过 id 关联至任何操作(参阅 onAction 属性)或按钮(参阅 onButton 属性)。

除了 OptionDialogFacet 描述的属性之外,inputDialog 还有 defaultActions 属性,用来定义对话框使用的一组操作。值可以是:

  • OK

  • OK_CANCEL

  • YES_NO

  • YES_NO_CANCEL

默认值是 OK_CANCEL

inputDialog 元素:

  • parameters 元素可以包含如下参数:

    • stringParameter

    • booleanParameter

    • intParameter

    • doubleParameter

    • longParameter

    • bigDecimalParameter

    • dateParameter

    • timeParameter

    • dateTimeParameter

    • entityParameter

    • enumParameter

如需为对话框操作自定义逻辑,要在控制器创建适当的处理器方法。

要处理输入对话框的结果,可以安装相应的代理:

@Install(to = "inputDialogFacet", subject = "dialogResultHandler")
public void handleDialogResults(InputDialog.InputDialogResult dialogResult) {
    String closeActionType = dialogResult.getCloseActionType().name();
    String values = dialogResult.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();
}
inputDialog 的属性

caption - contentMode - defaultActions - height - id - maximized - message - onAction - onButton - stylename - width

inputDialog 的元素

actions - parameters