Struts Документация ActionForm и DynaActionForm четко указывает.
Если вы не укажете начальный атрибут, числа будут инициализированы в 0, а объекты равны нулю.
Я знаю, что вы используете Long
, но (даже начиная с Autoboxing) следующие типы данных "упакованы".
- Integer / int
- Double/ double
- Long / Long
- Float / float
- Boolean / Boolean
- Short / Short
Когда Struts видитобъектный подтип Number
вместо его примитивного типа автоматически подставляет его для вас, поэтому у вас есть значение по умолчанию 0
.Он имеет собственную реализацию преобразования типа примитив / объект (в BeanUtils
).Причина этого заключается в обратной совместимости со старыми версиями Struts 1 (которые работали на JDK 1.4 и JDK 1.3).
Надеюсь, это поможет.