Редактирование коллекций с помощью редакторов GWT и RequestFactory - PullRequest
2 голосов
/ 17 августа 2011

См. оригинальный вопрос для контекста.

Дополнительный контекст:

  • Objectify-Appengine используется для настойчивости.
  • FormProxy и QuestionProxy имеют тип EntityProxy
  • QuestionDataProxy и его подтипы относятся к типу ValueProxy
  • Все редакторы реализуют HasRequestContext, а в случае QuestionData Редакторы подтипа HasRequestContext.setContext() вызывается явно из родительского элемента.

Первая проблема связана с коллекциями, а вторая - с полиморфными типами . Я не уверен, если проблема в том, как я использую Editors или RequestFactory. Поскольку данные отсутствуют в полезной нагрузке RPC, мы можем исключить настройку персистентности.

Проблема

Все значения для QuestionProxy равны нулю в запросе RPC (если QuestionProxy создается заново, в противном случае все в порядке)

Вопрос

Как правильно добавить / удалить Questions из формы. Какова последовательность вызова методов создания, редактирования, обновления для Question, Form и QuestionData при использовании редакторов.


Современные решения

Функциональность добавления вопроса (в упражнении):

@Override
public void addQuestion(final QuestionEditor questionEditor) {
    final QuestionProxy proxy = theOneAndOnlyOneContextForEditing.create(QuestionProxy.class);
    final QuestionRequest dpr = theOneAndOnlyOneContextForEditing.append(clientFactory.getRequestFactory()
            .qestionRequest());
    dpr.updateQuestion(proxy);
    questionListEditor.asEditor().getList().add(proxy);
}

Чтобы удалить вопрос, я отмечаю флаг в вопросе, который удалит его из списка на сервере, и удалит его. (взломать) Это работает только для вопросов, которые уже были сохранены.

...