AjaxFormLoop не заполняет значения для вновь созданных элементов формы после отправки

Может кто-нибудь указать, когда и где в коде во время отправки формы ajaxformloop копирует недавно добавленные результаты строки, я имею в виду следующий пример кода - http://jumpstart.doublenegative.com.au/jumpstart/examples/ajax/formloop1

У меня есть аналогичный код, ниже мой ValueEncoder

@Log
public ValueEncoder<Promotion> getPromotionEncoder() {

    return new ValueEncoder<Promotion>() {

        @Log
        public String toClient(Promotion promo) {
            log.debug("toClient id="+promo.getId());
            if (promo.getId() == 0)
            {
                return NEW_PROMOTION;
            }
            return new Long(promo.getId()).toString();
        }
        @Log
        public Promotion toValue(String id) {

            log.debug("toValue id="+id);
            Promotion promotion = null;

            if (id.equals(NEW_PROMOTION))
            {
                promotion = new Promotion();
                newPromotions.add(promotion);
            }
            else 
            {
                promotion = crudService.findUniqueWithNamedQuery(Promotion.BY_ID,
                                    QueryParameters.with("id", new Long(id).longValue()).parameters());
            }
            return promotion == null? new Promotion(): promotion;
        }
    };
}

Когда метод onSuccess() вызывается после отправки формы, я не могу получить доступ к значениям вновь созданных строк, которые я сохраняю в newPromotions в методе toValue() выше.

Ценим любую помощь в этом.


person user1010373    schedule 07.12.2011    source источник


Ответы (1)


Ваше сравнение в toClient неверно:

if (promo.getId() == 0){ return NEW_PROMOTION; }

когда вы создаете новую акцию, ее идентификатор, скорее всего, не нулевой, а NULL. Jumpstart ValueEncoder делает это следующим образом:

return id == null ? NEW_PERSON : id.toString();

Поэтому ваш метод toValue тоже не работает :)

person dube    schedule 26.03.2012