![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
trace |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 3.12.2005 Репутация: нет Всего: нет |
добрый день,
возникла следующая проблема. разработан некоторый jsf custom tag. он функционирует корректно, если его поместит просто в форму, но если его поместить в PanelGrid, то при сабмите формы(по кнопке либо javascript-ом), он отображается 2 раза. еще раз сабмитишь - 3 раза. еще раз - 4, и т.д. , и т.п. Может кто-то подскажет, в чем может быть проблема? |
|||
|
||||
alexsmirnov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 23.8.2005 Репутация: 5 Всего: 7 |
Скорее всего, в методах saveState/restoreState забыли сохранить или восстановить состояние суперкласса
то есть скорее всего проблемы в изменении id компонента между запросами |
|||
|
||||
trace |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 3.12.2005 Репутация: нет Всего: нет |
У меня вообще не были переопределены saveState() и RestoreState(). Но добавление их в виде
ничего не изменило, к сожалению. Id компонента я получаю через String clientId = getClientId(context), при сабмите EncodeBegin вызывается несколько раз, и id при этом выдается тот же самый. Может в Save/RestoreState нужно добавить что-то еще? |
|||
|
||||
alexsmirnov |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 23.8.2005 Репутация: 5 Всего: 7 |
Тогда нужно более подробно про код для понимания.
Разница с PanelGrid - он сам выводит дочерние компоненты, вместо вывода по тегам JSP. Когда встречается такое место - jsf пытается понять - остались ли компоненты старыми ил что-то на странице поенялось ( например- сработал <c:if > Для сравнения используются именно id компонентов, и если они не сохраняются ( после восстановления null ) - именно такое дублирование и происходит. Но это не единственная причина , возможны варианты Попробуй присвоить компоненту id в явном виде - если опять продублируются и не будет exception на duplicate id - ищи именно в этом направлении Если выругается - скорее где-то в JSP теге |
|||
|
||||
trace |
|
||||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 3.12.2005 Репутация: нет Всего: нет |
Id у меня и задается напрямую, это необходимый атрибут... в общем, думаю, лучше привести код:
на jsp странице (неотносящиеся к делу атрибуты опущены)
UICustomerSelectTag(лишнее тоже опущено, основная идея в том, что ид берется из getClientId, и используется как id input-а):
Вот примерно так. Можете что-то посоветовать? |
||||
|
|||||
trace |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 3.12.2005 Репутация: нет Всего: нет |
Еще один момент. Эта проблема 100% связана именно с заданием id тега, потому что в отсутствие этого атрибута удваивание не происходит. Однако, проблема в том что мне по функциональности никак без задания ид не обойтись...
|
|||
|
||||
trace |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 3.12.2005 Репутация: нет Всего: нет |
В общем(может кому пригодится), проблема была таки в задании атрибута id для custom tag-а. Мне нужно было задавать id (фактически было несколько custom tag-ов, используемых в связке). Наверное, jsf как-то иначе анализирует теги при задании именно атрибута id... Anyway, заменой атрибута id на атрибут customerID(можно подставить что угодно
![]() ![]() ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |