Izpack:验证器不起作用?
我的“UserInputSpec.xml”文件中有一个字段描述。
<field type="radio" variable="selected.source" >
<description align="left" txt="Please select TBPAPIIntegrator data source:" id="combo.text" />
<spec>
<choice txt="IMKB Server" id="combo.item.imkb" value="imkb"/>
<choice txt="Exernal Database" id="combo.item.database" value="db"/>
</spec>
<validator class="com.j32bit.installer.validator.SelectSourceValidator" txt="Please select one source!" >
<param name="selected.source" value="${selected.source}"/>
</validator>
</field>
这是我的 Validator 类:
package com.j32bit.installer.validator;
import java.util.Map;
import com.izforge.izpack.panels.ProcessingClient;
import com.izforge.izpack.panels.Validator;
public class SelectSourceValidator implements Validator{
@Override
public boolean validate(ProcessingClient client) {
Map<String, String> params = client.getValidatorParams();
if( params.get("selected.source").equals("imkb")
|| params.get("selected.source").equals("db"))
return true;
return false;
}
}
“Installer.xml”中的变量减速度也如下:
<variables>
<variable name="selected.source" value="" />
</variables>
单选按钮未选中。虽然按钮仍未选择,但如果我单击“下一步”按钮,安装程序会继续下一页,并且验证不起作用。
请帮忙! 提前致谢。
I have a field description in my "UserInputSpec.xml" file.
<field type="radio" variable="selected.source" >
<description align="left" txt="Please select TBPAPIIntegrator data source:" id="combo.text" />
<spec>
<choice txt="IMKB Server" id="combo.item.imkb" value="imkb"/>
<choice txt="Exernal Database" id="combo.item.database" value="db"/>
</spec>
<validator class="com.j32bit.installer.validator.SelectSourceValidator" txt="Please select one source!" >
<param name="selected.source" value="${selected.source}"/>
</validator>
</field>
and this my Validator class:
package com.j32bit.installer.validator;
import java.util.Map;
import com.izforge.izpack.panels.ProcessingClient;
import com.izforge.izpack.panels.Validator;
public class SelectSourceValidator implements Validator{
@Override
public boolean validate(ProcessingClient client) {
Map<String, String> params = client.getValidatorParams();
if( params.get("selected.source").equals("imkb")
|| params.get("selected.source").equals("db"))
return true;
return false;
}
}
Also variable deceleration as below in "Installer.xml":
<variables>
<variable name="selected.source" value="" />
</variables>
Radio buttons comes unselected. While buttons still unselected if I click "next" button installer continuous the next page and validation does not work.
Please help!
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
似乎在
或
中声明变量根本不起作用。相反,您只需将变量名称写入字段,就可以在安装程序的任何位置使用和引用它。我还从 UserInputPanelSpec.xml 中的字段声明中删除了验证器,并将其移至 Installer.xml 中的面板声明中。
Installer.xml:
UserInputPanelSpec.xml:
现在可以正常工作了。
It seems like declaring a variable in
<dynamicvariables></dynamicvariables>
or in<variables></variables>
does not work at all. Instead you can just write a variable name to a field and it can be used and referenced in anywhere in installer.I also removed validator from field declaration in UserInputPanelSpec.xml and moved it to panel declaration in Installer.xml.
Installer.xml:
UserInputPanelSpec.xml:
Now it is working with no problem.
对于字段,如果您在规范中包含验证器元素会有所帮助:
For field, it can help if you include validator element inside the spec one: