Регистрация  |  Вход

Проблема с rerender в компонентах

Всем привет!)
Ситуация следующая - есть страница, на ней несколько компонентов одного вида (таблицы), различающихся типом выводимых объектов. Требуется произвести операцию (добавить объект) в компонент. Вызывается всё следующим образом:
- на странице после клика всплывает окно, вводятся данные и добавляется юзер
- далее должен происходить rerender компонента, который должен подхватить изменения из базы и перерисовать таблицу.

проблема в том, что из-за того, что несколько таких компонентов на одной странице, action function внутри компонента срабатывает, но в контроллере не происходит действия. А если делать rerender компонента - ничего не изменяется.

метод, возвращающий объекты из контроллера компонента, выглядит след.образом (часть) :

public String getObjectsJSON() {
String result = '[]';

if (getObjects() != null && !getObjects().isEmpty()) {
result = JSON.serialize(getObjects());
}
system.debug('22222countList!!!!!' + countList);
return result;
}

если мы уберём условие if (getObjects() != null && !getObjects().isEmpty() - всё сработает, однако, увеличится количество запросов. В общем, интересует то, как можно перезагрузить контроллер компонента, не перезагружая страницу, чтобы компонент построился заново)))

Всем привет!)
Ситуация следующая - есть страница, на ней несколько компонентов одного вида (таблицы), различающихся типом выводимых объектов. Требуется произвести операцию (добавить объект) в компонент. Вызывается всё следующим образом: 
- на странице после клика всплывает окно, вводятся данные и добавляется юзер
- далее должен происходить rerender компонента, который должен подхватить изменения из базы и перерисовать таблицу.

проблема в том, что из-за того, что несколько таких компонентов на одной странице, action function внутри компонента срабатывает, но в контроллере не происходит действия. А если делать rerender компонента - ничего не изменяется.

метод, возвращающий объекты из контроллера компонента, выглядит след.образом (часть) :

[code]
    public String getObjectsJSON() {
		String result = '[]';

		if (getObjects() != null && !getObjects().isEmpty()) {
			result = JSON.serialize(getObjects());
		}  
			system.debug('22222countList!!!!!' + countList);	
		return result;
	}[/code]

если мы уберём условие if (getObjects() != null && !getObjects().isEmpty() - всё сработает, однако, увеличится количество запросов. В общем, интересует то, как можно перезагрузить контроллер компонента, не перезагружая страницу, чтобы компонент построился заново)))

p.s. ActionRegion не помогает((
p.p.s. только сейчас увидел, что редактировать сообщения можно просто кнопку не увидел сразу, обычно они внизу, а тут справа вверху)

p.s. ActionRegion не помогает((
p.p.s. только сейчас увидел, что редактировать сообщения можно :D просто кнопку не увидел сразу, обычно они внизу, а тут справа вверху)

p.p.p.s. Решили. Заменили component на DynamicComponent

p.p.p.s. Решили. Заменили component на DynamicComponent 

Dmitry Kurd
if (getObjects() != null && !getObjects().isEmpty()) {
result = JSON.serialize(getObjects());
}

только не говори что getObjects() селектит данные из БД :o

[quote="Dmitry Kurd"]if (getObjects() != null && !getObjects().isEmpty()) {
			result = JSON.serialize(getObjects());
		}  [/quote]

только не говори что getObjects() селектит данные из БД :o

селектит, и делает пригодными для jQgrid-таблички ;)

селектит, и делает пригодными для jQgrid-таблички ;)

Dmitry Kurd
селектит, и делает пригодными для jQgrid-таблички ;)

ну и зачем из триджы селектить?

[quote="Dmitry Kurd"]селектит, и делает пригодными для jQgrid-таблички ;)[/quote]
ну и зачем из триджы селектить?

Дима Лисовский
Dmitry Kurd
селектит, и делает пригодными для jQgrid-таблички ;)

ну и зачем из триджы селектить?

селект происходит один раз, в остальных случаях выдаётся уже сам список

[quote="Дима Лисовский"][quote="Dmitry Kurd"]селектит, и делает пригодными для jQgrid-таблички ;)[/quote]
ну и зачем из триджы селектить?[/quote]

селект происходит один раз, в остальных случаях выдаётся уже сам список

Dmitry Kurd
проблема в том, что из-за того, что несколько таких компонентов на одной странице, action function внутри компонента срабатывает, но в контроллере не происходит действия. А если делать rerender компонента - ничего не изменяется.

С этими компонентами одни проблемы. Лучше по возможности их не использовать!!!
Я конечно не совсем понимаю в чем у тебя проблема, но мне почему-то кажется что ты столкнулся с тем что компоненты общаются со своими контроллерами и никак не воздействуют на контроллер самой страницы. Собственно как и обратно.

[quote="Dmitry Kurd"]проблема в том, что из-за того, что несколько таких компонентов на одной странице, action function внутри компонента срабатывает, но в контроллере не происходит действия. А если делать rerender компонента - ничего не изменяется.[/quote]
С этими компонентами одни проблемы. Лучше по возможности их не использовать!!!
Я конечно не совсем понимаю в чем у тебя проблема, но мне почему-то кажется что ты столкнулся с тем что компоненты общаются со своими контроллерами и никак не воздействуют на контроллер самой страницы. Собственно как и обратно.

Dmitry Shnyrev
Dmitry Kurd
проблема в том, что из-за того, что несколько таких компонентов на одной странице, action function внутри компонента срабатывает, но в контроллере не происходит действия. А если делать rerender компонента - ничего не изменяется.

С этими компонентами одни проблемы. Лучше по возможности их не использовать!!!
Я конечно не совсем понимаю в чем у тебя проблема, но мне почему-то кажется что ты столкнулся с тем что компоненты общаются со своими контроллерами и никак не воздействуют на контроллер самой страницы. Собственно как и обратно.

Да, только столкнулся не я, а мой коллега - ему приходится каждый раз после DML-операции с помощью DinamicComponent возвращать компонент, который нужно "проререндерить".
На самом деле иногда компоненты очень удобная вещь (например, в нашем случае - вывод связанных объектов в таблице, одинаковые элементы на страницах...), т.к. ты, изменяя параметры компонента, изменяешь его не на одной странице а на всех, где он используется. Правда, иногда могут возникать проблемы (как с перерисовкой, так, к примеру, и с использованием simpleDialog/modalDialog) =)

[quote="Dmitry Shnyrev"][quote="Dmitry Kurd"]проблема в том, что из-за того, что несколько таких компонентов на одной странице, action function внутри компонента срабатывает, но в контроллере не происходит действия. А если делать rerender компонента - ничего не изменяется.[/quote]
С этими компонентами одни проблемы. Лучше по возможности их не использовать!!!
Я конечно не совсем понимаю в чем у тебя проблема, но мне почему-то кажется что ты столкнулся с тем что компоненты общаются со своими контроллерами и никак не воздействуют на контроллер самой страницы. Собственно как и обратно.[/quote]
Да, только столкнулся не я, а мой коллега - ему приходится каждый раз после DML-операции с помощью DinamicComponent возвращать компонент, который нужно "проререндерить".
На самом деле иногда компоненты очень удобная вещь (например, в нашем случае - вывод связанных объектов в таблице, одинаковые элементы на страницах...), т.к. ты, изменяя параметры компонента, изменяешь его не на одной странице а на всех, где он используется. Правда, иногда могут возникать проблемы (как с перерисовкой, так, к примеру, и с использованием simpleDialog/modalDialog) =)