Передача переменных установщика с экрана типа установки в выражение условия

Я добавил экран типа установки в свой установщик install4j. В соответствии с выбранным типом установки скачиваются и разархивируются определенные файлы. Эти действия сгруппированы в четыре группы и находятся в разделе «Установка». Чтобы управлять этим потоком выполнения, я использую выражение условия для каждой группы в зависимости от выбранного типа установки.

Вот код:

if ((String)context.getVariable("sys.installationTypeId") == "424")
    return true;
return false;

Проблема в том, что он всегда возвращает false (не выполняется), даже если я выбираю тип установки.

кто-нибудь знает, почему это произошло? Может быть,

(String)context.getVariable("sys.installationTypeId") 

это не строка? Может это массив? Как правильно написать условие?

Спасибо!


Решение найдено!

Я нашел два обходных пути для этой проблемы

  1. Используйте числовые значения для installTypeId и преобразуйте их в целое число:

if (Integer.parseInt(context.getVariable("sys.installationTypeId").toString()) == 424) return true; return false;

  1. Используйте метод equals() внутри оператора if. Это позволяет использовать пользовательские идентификаторы.

if (((String)context.getVariable("sys.installationTypeId")).equals("424")) return true; return false;


person Community    schedule 16.08.2013    source источник


Ответы (1)


Вы не можете сравнивать строки с оператором равенства, вы должны использовать equals. Оператор равенства проверяет, относятся ли обе стороны к одному и тому же объекту, что обычно не относится к динамически создаваемым строкам.

Я бы рекомендовал установить выражение условия на

context.getVariable("sys.installationTypeId").equals("424")

Вам не нужен оператор if и возвращаемые значения, выражение оценивается как логическое.

person Ingo Kegel    schedule 17.08.2013