如何将自定义类属性设置为自定义操作?
问题描述:
今天我想创建一个自定义安装操作,其中包含我的自定义类的实例作为属性。自定义类由install4j的Set 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});
是否建议将PropertyConverter直接实现到ActionBean中,清单? – Hardie82
这个bean信息只在设计时才起作用,在那个时候没有安装上下文。在动作bean上实现PropertyConverted是不可能的,因为在bean信息的构造器中没有bean实例。 –
好的,我今天会尝试。对于我的自定义类,它必须是可序列化的才能将其放到安装程序上下文变量中? – Hardie82