Это ошибка в более старых версиях ColdFusion (до ColdFusion 2016), поскольку атрибут size
явно приведен: (String)size
. И даже если вы передадите значение как String, ваше значение может не содержать десятичных разрядов, поскольку ColdFusion пытается проанализировать значение как Integer: Integer.parseInt((String)size)
// works
setup['size'] = "12";
// works, because literal numbers are casted to String
setup['size'] = 12;
// DOES NOT work, because any math calculation results into a Double
setup['size'] = 12 * 1;
// DOES NOT work, because this is a Double
setup['size'] = 12.1;
Ваше решение, использующее setup['size'] = toString(int(...));
, является правильным решением этой ошибки. int()
, чтобы убедиться, что вы в конечном итоге без десятичных разрядов (исключая NumberFormatException) и toString()
, чтобы убедиться, что вы передаете String (предотвращая ClassCastException).
(Этот пост больше похож на замечание, но слишком длинный для комментария. Не стесняйтесь принять свой собственный ответ.)