Почему Struts 1.0 конвертирует пустую строку в 0L? - PullRequest
0 голосов
/ 26 апреля 2011

У меня есть форма:

public class ActionLogForm extends ActionForm {
    private Long ContractId;
    public Long getContractId() {
        return contractId;
    }

    public void setContractId(Long ContractId) {
        this.contractId= contractId;
    }
}

и в JSP у меня есть:

<html:hidden property="contractId" styleId="contractId" value="" />

Почему actionLogForm.getContractId() в моем дао имеют 0L? Как я могу изменить значение по умолчанию с этим на ноль?

1 Ответ

2 голосов
/ 26 апреля 2011

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).

Надеюсь, это поможет.

...