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>

Радиокнопки не выбраны. Хотя кнопки по-прежнему не выбраны, если я нажимаю кнопку «Далее», установщик продолжает следующую страницу, и проверка не работает.

введите здесь описание изображения

введите здесь описание изображения

Пожалуйста помоги! Заранее спасибо.


person Olcay Ertaş    schedule 29.09.2011    source источник


Ответы (2)


Вроде как объявление переменной в <dynamicvariables></dynamicvariables> или в <variables></variables> вообще не работает. Вместо этого вы можете просто написать имя переменной в поле, и его можно будет использовать и ссылаться в любом месте установщика.

Я также удалил валидатор из объявления поля в UserInputPanelSpec.xml и переместил его в объявление панели в Installer.xml.

Установщик.xml:

<panels>
    <panel classname="UserInputPanel" id="select.source" >
        <validator classname="com.j32bit.installer.validator.SourceValidator"/>
    </panel>
</panels>

UserInputPanelSpec.xml:

<!-- SELECT SOURCE PANEL  -->
<panel id="select.source">
    <field type="radio" variable="selected.source" >
        <description align="left" txt="Please select TBPAPIIntegrator data source:" id="radio.text" />
            <spec>
                <choice txt="IMKB" id="radio.item.imkb" value="imkb" />
                <choice txt="Exernal Database" id="radio.item.db" value="db" />
            </spec>
    </field>
</panel>

Сейчас работает без проблем.

person Olcay Ertaş    schedule 14.10.2011

Для поля может помочь, если вы включите элемент валидатора внутри спецификации:

<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"/>

        <validator class="com.j32bit.installer.validator.SelectSourceValidator" txt="Please select one source!" >
            <param name="selected.source" value="${selected.source}"/>
        </validator>
    </spec>
</field>
person Yaroslav Lyakh    schedule 07.08.2013