Plugins IzPack:至少需要多个包中的一个

Plugins IzPack:至少需要多个包中的一个,plugins,izpack,Plugins,Izpack,我有一个由不同插件组成的软件,在IzPack中安装时可以选择这些插件。这些插件为软件提供了不同的功能:输入、处理和输出。该软件至少需要一个输入和输出插件才能工作。 如何指定在PackPanel中至少选择一个提供特定功能的插件?我认为这是在izpack v5.0.0-rc5和更新版本中实现的。如果取消选择了所有选项,则PacksPanel不允许继续 根据您的评论,我将使用conditionvalidator解决此问题: 基本上为每个包添加条件: <condition type="packs

我有一个由不同插件组成的软件,在IzPack中安装时可以选择这些插件。这些插件为软件提供了不同的功能:输入、处理和输出。该软件至少需要一个输入和输出插件才能工作。
如何指定在PackPanel中至少选择一个提供特定功能的插件?

我认为这是在izpack v5.0.0-rc5和更新版本中实现的。如果取消选择了所有选项,则PacksPanel不允许继续

根据您的评论,我将使用conditionvalidator解决此问题: 基本上为每个包添加条件:

<condition type="packselection" id="pack1inputselected">
  <name>Pack 1 input</name>
</condition>

包1输入
然后使用包组(输入、处理、输出)创建或设置条件,例如:

<condition type="or" id="inputgroup">
  <condition type="ref" refid="pack1inputselected" />
  <condition type="ref" refid="pack2inputselected" />
</condition>

然后添加一个最终和验证条件(id非常重要,因为它必须始终以conditionvalidator word开头!conditionvalidator类可以验证以conditionvalidator开头的所有条件。):


将conditionvalidator添加到panels元素中的PacksPanel:

<panel classname="PacksPanel" id="panel.packs">
  <validator classname="com.izforge.izpack.installer.validator.ConditionValidator" />
</panel>


在那里。每次conditionvalidator验证的条件(单击“下一步”时)都不是真的(即如果您没有选择正确的包),它将抛出一条消息,并且不允许您继续。您可以通过使用.error.message(例如,在本例中,conditionvalidator.packsselected.error.message)将字符串添加到CustomLangPack来更改消息。

这是此面板的本机功能,因为此版本中,必须始终至少选择一个包(是否具有required=“yes”属性)或者一个非强制性的包这很好,但是我需要一些类似于包组的东西,用户必须为每个组至少选择一个包。我已经更新了答案,希望能解决您的问题。这几乎如预期的那样工作。非常感谢。为什么屏幕截图中的按钮被禁用?消息是如何触发的?该按钮被禁用,因为在PacksPanel中没有选择任何包(它实际上只适用于较新的izpack版本,在早期,它没有禁用“下一步”按钮)。该消息由条件conditionvalidator.packsselected等于false触发。
<panel classname="PacksPanel" id="panel.packs">
  <validator classname="com.izforge.izpack.installer.validator.ConditionValidator" />
</panel>