我已经使用IZPACK API创建了一个示例安装程序。在这里,我通过扩展IzPanel创建了一个自定义面板类。之后,我通过实现DataValidator接口创建了一个面板数据验证器。
我已经在install.xml中给出了它的条目,如下所示:
<panel classname="TestInstallation" id ="TestInstallation">
<validator classname="com.izforge.izpack.panels.TestValidator"/>
</panel> 验证器运行正常并显示错误消息。在这里,我需要根据在面板多个字段中输入的错误用户输入组合来显示错误消息。但是,我无法在我的自定义数据验证器(TestValidator)中读取用户输入的数据,并获得null。在我的自定义数据验证器中,AutomatedInstallData.getAttribute("")和AutomatedInstallData.getVariable("")两个方法都返回null。
如果我遗漏了什么,请帮助我并让我知道。
提前感谢!
发布于 2014-03-17 17:49:40
由于您已经通过实现DataValidator接口获得了自己的验证器,因此可以从validateData覆盖方法中的InstallData对象获取用户输入。例如:
@Override
public Status validateData(InstallData data) {
if (data.getVariables().get("MyFieldVariable");) {
return Status.OK;
} else {
return Status.ERROR;
}
}"MyFieldVariable“是在自定义面板中使用的变量的名称。我猜您必须有几个输入字段来进行验证。但至少在这个例子中是这样的:
<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>https://stackoverflow.com/questions/20584779
复制相似问题