Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java EE (J2EE) и Spring > JSF Как перевывести страничку юзеру? |
Автор: Sleepy_PIP 28.1.2005, 19:10 |
Собственно никак не соображу - каким образом из бина перевывести страничку юзеру. При условии что это valueChange метод. Т.е. идея простая - при чекании некоего чек-бокса надо перерисовать страничку запретив некоторые контролы (ну или выставив их в конкретные значения). Как? как собственно заставить переисоваться страничку? У меня такое ощущение что никак ... ![]() |
Автор: Alt 3.2.2005, 00:05 |
Не совсем понял, что значит перевывести из бина. Чтобы при чекании чекбокса перевывести страницу надо поставить onchange="this.form.submit( );" типа <h:selectBooleanCheckbox onchange="this.form.submit( );" valueChangeListener="#{.....}" /> Вообще посмотри здесь - http://www.onjava.com/pub/a/onjava/excerpt/JSF_chap8/index1.html?page=2 может найдешь что-нибудь полезное. |
Автор: Sleepy_PIP 3.2.2005, 08:20 | ||
Вот. вот этого не хватало - this.form.submit( ) Спасибо! но это еще не все. Со стороны дергаем бин через какую-то протерть и хочется что-б при этом отображенная страничка перерисовалась ... |
Автор: Sleepy_PIP 3.2.2005, 12:09 |
ага! угу, счаз! не все так просто оказывается. <af:selectBooleanCheckbox value="#{ManPage.pFindInOnlyDir}" label="Искать только в каталогах " immediate="true" onchange="this.form.submit( );" valueChangeListener="#{ManPage.ChL1}"> </af:selectBooleanCheckbox> this.form.submit( ); - срабатывает только 1 раз или вообще не срабатывает ![]() точнее так. Первый запуск - кликаем по чек-боксу - ничего. тоесть вообще ничего - и чекбокс не чекится. Повторные клики на нем-же приводят только к изменению значения чекбокса. Листенер не вызывается. соотв. сабмит формы отсудствует. |
Автор: Sleepy_PIP 3.2.2005, 12:39 |
нормально так ... на рез. странице вообще нет this.form..submit() ![]() |
Автор: Sleepy_PIP 3.2.2005, 13:28 | ||
а вот так: <h:selectBooleanCheckbox value="#{ManPage.pFindInOnlyDir}" immediate="true" onchange="this.form.submit();" valueChangeListener="#{ManPage.ChL1}" id="aa2" title="Искать только в каталогах "> </h:selectBooleanCheckbox> эвент листенер срабатывает, но никаких изменений на форме не отображается. более того - форма не перевыводится. т.е.
не более чем пустой звук ![]() А почему??? причем интересно - пустой звук в IE, а во встроенном браузере (в JBuilder2005) - через раз. т.е. шелкаем - ничего. щелкаем еще раз - все перевыводится ... и эвент срабатывает по коду бина. А в IE - вообще все до фонаря. и эвент не срабатывает. хм. а скрипты у меня разрешены однако! |
Автор: Sleepy_PIP 3.2.2005, 13:47 | ||||
не, ну вообще финишь ![]()
так вот - в IE ManPage.ChL1 срабатывает не на чекании id="aa2", а на чекании
вот так вот! видимо я глубоко где-то просел. в смысле ошибаюсь. Кто-нито может помочь? попробовал подключится не на oncange а на onclick - поведение _точно_ такое-ж ... фигня какая-то ![]() не, ну смех и грех - во строенном браузере фигня, а в IE теперь хорошо все отрабатывается (если на onclick вешаться),..... ох, как-ж мне все это не нравится ![]() |
Автор: igon 3.2.2005, 21:01 | ||
Покажи не jsf, а html исходник. ИМХО, все эти listener на bin юзеру(html) по барабану и вообще напрямую не доступны. HTML, генерируемая из myJSF.jsf и подлежащая перезагрузке, должна выглядеть примерно так:
1. Обрати внимание на обязательность наличия тега <form>, без него submit() будет делать неизвестно что. 2. Я не уверен в последовательности действий после onClick: сначала ставится/снимается галка, а потом вызывается функция, или наоборот. Если сначала функция, то до галки дело не дойдет - после submit() отправляется запрос или все просто останавливается (как, похоже, в твоем случае). Если до галки дело не дошло - ставь/снимай ее в функции. |
Автор: Sleepy_PIP 4.2.2005, 00:58 | ||||
Спасибо! интуитивно-экспериментально нашел работающий вариант. выглядит так:
т.е. отрабатываю onClick - при этом листенер:
срабатывает успешно и везде. Галка в чекбоксе ставится правильно. в рез. HTML-е присудствует this.form.submit(); но только если на onClick. на onChange - в рез. HTML-е this.form.submit(); - отсудствует. Пробую понять почему так ... |