【问题标题】:Magnolia (6.2) chooser ChooseAction availability by node typeMagnolia (6.2) 选择器 ChooseAction 按节点类型的可用性
【发布时间】:2021-10-04 21:33:31
【问题描述】:

我正在尝试将选择操作限制为特定的节点类型。定义应用程序没有显示任何错误,但选择按钮始终处于活动状态。这是我正在使用的选择器定义:

!inherit:ui-framework-jcr:chooser
  actions:
    choose:
      availability:
        nodeTypes:
          - shopTaxCategory

我确实注意到info.magnolia.ui.contentapp.action.ChooseActionDefinition 的父类之一在其构造函数中设置了可用性。尽管setAvailability() 方法仍然可用,但在初始化对话框时,构造函数会被多次调用(?!),即使可用性设置为配置的内容,最终它也会被该父项中的内容再次覆盖班级。因此,我创建了自己的ConfigurableChooseActionDefinition,它本身并没有设置可用性。现在,可用性是根据定义应用程序中显示的配置设置的: 不幸的是,无论在选择器中选择了哪个节点,“选择”按钮始终处于活动状态:

【问题讨论】:

    标签: dialog action magnolia


    【解决方案1】:

    所以,我对ConfigurableChooseActionDefinition 的想法实际上是正确的。

    public class ConfigurableChooseActionDefinition extends ConfiguredActionDefinition {
        public static final String CHOOSE_ACTION_NAME = "choose";
    
        public ConfigurableChooseActionDefinition() {
            this.setImplementationClass(ChooseAction.class);
            this.setName(CHOOSE_ACTION_NAME);
        }
    
        ConfigurableChooseActionDefinition(String name) {
            this();
            this.setName(name);
        }
    
        @Override
        public int getShortcut() {
            return ENTER;
        }
    }
    

    但是,我一定是搞砸了 $linkField 配置。甚至没有使用带有ConfigurableChooseActionDefinition 的选择器。正确配置后,当用户选择未在选择器对话框的availability/nodeTypes 中列出的节点时,实际上禁用了“选择”按钮:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多