четверг, 7 ноября 2013 г.

CheckBox в таблице связанный с INTEGER полем базы

В БД есть поле do_flg типа INTEGER со значениями 0(ложь), 1(истина), которое нужно отображать в таблице интерфейса в виде чекбокса.


  • Создаем в xxxEO транзиентный(!) атрибут flg типа Boolean всегда изменяемый.
  • Добавляем flg в xxxVO где ставим его ControlType CheckBox
  • В классе xxxEOImpl.java переопределяем методы доступа к flg так, чтобы они были привязаны к полю do_flg
    public Boolean getFlg() {
        Number n = (Number)getAttributeInternal(DOFLG);
        if( n != null && n.longValue()== 1) {
            return new Boolean(true);
        }
        return new Boolean(false);
    }

    public void setFlg(Boolean value) {
        if(value == null || !value.booleanValue())
            setAttributeInternal(DOFLG, new BigDecimal(0));
        else 
            setAttributeInternal(DOFLG, new BigDecimal(1));
        setAttributeInternal(FLG, value);
    }


Всё. Теперь все изменения flg будут приводить к изменению do_flg/