2011-01-20 5 views
1

Я пытаюсь реализовать (как часть более крупной системы) функцию, в которой пользователь может опубликовать сообщение. Когда пользователь нажимает кнопку post, я использую RichFaces и a4j для извлечения созданного сообщения с помощью ajax.a4j: repeat - динамическое добавление нового элемента

Я бы предпочел, чтобы сообщение не отображалось автоматически, как только возвращается ответ. Скорее, я хотел бы добавить панель вывода внутри скрытого div. Когда пользователь нажимает кнопку «пост», эта панель будет заполнена, но явно скрыта от пользователя.

То, что я хотел бы сделать после этого, - это перемещение нового элемента из скрытого div в правильное положение с помощью jQuery.

В любом случае, проблема здесь заключается в том, что я использую свойство ajaxKeys для a4j: repeat, чтобы обновить одну строку, когда против нее было предпринято какое-либо действие. Например, если кто-то присваивает строке оценку 5, я хочу переименовать только эту строку (установив правильный ключ на стороне сервера).

Если я использую этот метод, в то время как перемещение созданного ajax элемента будет, помимо других сообщений, будет нормально работать нормально, если пользователь предпринимает действие против этой строки, я не верю a4j: repeat сможет работать с ним, учитывая, что он сам не генерировал его.

Это правильно? Если да, можно ли предложить какие-либо обходные пути?

Facebook может достичь аналогичной цели. Вы можете создать или удалить сообщение, а также прокомментировать сообщение и обновить этот объект. Я начинаю думать, что a4j: repeat не может быть лучшим способом подойти к этой проблеме. Мысли?

+0

Вы действительно не объяснили, почему вы не думаете, что a4j: repeat помогает вам здесь. Почему это не работает? –

+0

repeat не позволяет добавлять новые элементы без обновления всей таблицы. – NRaf

ответ

2

У меня была аналогичная проблема некоторое время назад. Я попытался попробовать и не смог заставить его работать.

В конце концов я решил использовать javascript и Seam Remoting, которые позволили мне больше контролировать, что происходит. Мне удалось заставить его работать с этим подходом.

+0

Как вы нашли? Моя проблема с Seam Remoting заключается в том, что она может увеличить объем отправляемых данных, поскольку все происходит на стороне клиента. Тем не менее, это выглядит все более и более, как будто мне придется идти по этому пути. – NRaf

+0

Я пошел нормально, чего я пытался достичь. Вам нужно будет немного поработать вручную, но по крайней мере вы получите большой контроль над тем, что происходит, удалив магию RichFaces с пути :) Вам не нужно много отправлять клиенту , только новый комментарий нет? Вы все еще можете использовать область разговора, поэтому не нужно отправлять все назад и вперед. Я, возможно, что-то пропустил здесь, но не понимаю, зачем вам нужно снова отправлять все на сервер. – Tiago

Смежные вопросы