簡體   English   中英

如何將自定義類屬性設置為自定義動作?

[英]How to set a custom class property into a custom action?

今天,我想創建一個自定義安裝操作,其中包含我的自定義類的實例作為屬性。 該定制類通過install4jSet Varaible操作實例化,因此它也被設置為安裝上下文。 現在,我想將此實例傳遞給自定義操作。 因此,我已經使用getter()setter()方法實現了該動作,並創建了相應的ActionBeanInfo類。 如果將動作放入IDE的項目配置中,則無法為自定義類的配置字段設置任何值。 也許我必須為我的自定義類實現某種PropertyConverter類? 我查看了示例代碼,但未找到任何解決方案。 那么我如何獲得這項工作呢?

AbstractInstallAction實現:

public class MyCustomAction extends AbstractInstallAction {

  private MyCustomClass instance;

  @Override
  public boolean install(InstallerContext installerContext) throws UserCanceledException {
    ...
    // do some stuff with the MyCustomClass instance
    ...
  }

  public MyCustomClass getMyCustomClass() {
    return instance;
  }

  public void setMyCustomClass(MyCustomClass instance) {
    this.instance= instance;
  }
}

ActionBeanInfo實現:

public class MyCustomActionBeanInfo extends ActionBeanInfo {

  private static final String PROPERTY_CUSTOM_CLASS = "myCustomClass";

  public MyCustomActionBeanInfo () {
    super("Custom Action.", "This action will do some custom stuff.", null,
            true, false, null, MyCustomAction.class);

    addPropertyDescriptor(create(PROPERTY_CUSTOM_CLASS, getBeanClass(), "Custom class",
            "Sets the custom class to do some custom stuff during installation."));
  }
}

您必須編寫一個屬性轉換器,可以將MyCustomCass實例轉換為字符串,還可以將字符串轉換為實例MyCustomClass

您必須實現的接口是com.install4j.api.beaninfo.PropertyConverter 一旦實現了屬性轉換器,就可以像下面這樣在BeanInfo類的構造函數中注冊它:

setPropertyConverters(new PropertyConverter[] {propertyConverters});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM