首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IZPACK自定义DataValidator无法读取自定义面板用户输入

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

Stack Overflow用户
提问于 2013-12-14 23:00:06
回答 1查看 805关注 0票数 0

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

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

代码语言:javascript
复制
<panel classname="TestInstallation" id ="TestInstallation"> 
<validator classname="com.izforge.izpack.panels.TestValidator"/> 
</panel> 

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

如果我遗漏了什么,请帮助我并让我知道。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2014-03-17 17:49:40

由于您已经通过实现DataValidator接口获得了自己的验证器,因此可以从validateData覆盖方法中的InstallData对象获取用户输入。例如:

代码语言:javascript
复制
@Override 
public Status validateData(InstallData data) {
  if (data.getVariables().get("MyFieldVariable");) {
     return Status.OK;
  } else {
     return Status.ERROR;
  }
}

"MyFieldVariable“是在自定义面板中使用的变量的名称。我猜您必须有几个输入字段来进行验证。但至少在这个例子中是这样的:

代码语言:javascript
复制
<field type="text" variable="MyFieldVariable">
   <spec txt="My own field to validate" id="MyFieldVariable" size="15" set="" />
</field>

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

代码语言:javascript
复制
@Override
 public String getErrorMessageId() {
  return errorMsg;
}

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

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20584779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档