IZPACK自定义DataValidator无法读取自定义面板用户输入

时间:2013-12-14 15:00:06

标签: izpack

我使用IZPACK API创建了一个示例安装程序。在这里,我通过扩展IzPanel创建了一个自定义面板类。之后,我通过实现DataValidator接口创建了一个面板数据验证器。

我在install.xml中给出了它的条目,如下所示:

<panel classname="TestInstallation" id ="TestInstallation"> 
<validator classname="com.izforge.izpack.panels.TestValidator"/> 
</panel> 

Validator运行正常并显示错误消息。在这里,我需要根据在面板多个字段中输入的错误用户输入组合来显示错误消息。但是,我无法在自定义数据验证程序(TestValidator)中读取用户输入的数据并获取null。 AutomatedInstallData.getAttribute(“”)以及AutomatedInstallData.getVariable(“”)两个方法都在我的自定义数据验证器中返回null。

如果我在这里遗漏了什么,请帮忙告诉我。

提前致谢!!!

1 个答案:

答案 0 :(得分:0)

由于您通过实现DataValidator接口来拥有自己的验证器,因此可以在validateData overriden方法中从InstallData对象获取用户输入。例如

@Override 
public Status validateData(InstallData data) {
  if (data.getVariables().get("MyFieldVariable");) {
     return Status.OK;
  } else {
     return Status.ERROR;
  }
}

&#34; MyFieldVariable&#34;是自定义面板中使用的变量的名称。我想你必须有几个输入字段来验证。但至少在这个例子中它将是:

<field type="text" variable="MyFieldVariable">
   <spec txt="My own field to validate" id="MyFieldVariable" size="15" set="" />
</field>

要显示错误,将从validateData(InstallData数据)返回Status.ERROR,您应该在验证器中覆盖:

@Override
 public String getErrorMessageId() {
  return errorMsg;
}

这是可用的,并使用izpack 5.0.0-rc1进行测试。请注意,您还应该拥有正确的maven依赖项:

<dependencies>
  <dependency>
    <groupId>org.codehaus.izpack</groupId>
    <artifactId>izpack-panel</artifactId>
    <version>5.0.0-rc1</version>
  </dependency>
  <dependency>
    <groupId>org.codehaus.izpack</groupId>
    <artifactId>izpack-api</artifactId>
    <version>5.0.0-rc1</version>
  </dependency>
</dependencies>