Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSF Как перевывести страничку юзеру? 
:(
    Опции темы
Sleepy_PIP
Дата 28.1.2005, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 2
Всего: 12



Собственно никак не соображу - каким образом из бина перевывести страничку юзеру. При условии что это valueChange метод.
Т.е. идея простая - при чекании некоего чек-бокса надо перерисовать страничку запретив некоторые контролы (ну или выставив их в конкретные значения).
Как? как собственно заставить переисоваться страничку?
У меня такое ощущение что никак ... smile.



--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Alt
Дата 3.2.2005, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 23.8.2004

Репутация: 1
Всего: 2



Не совсем понял, что значит перевывести из бина.
Чтобы при чекании чекбокса перевывести страницу надо поставить onchange="this.form.submit( );" типа
<h:selectBooleanCheckbox onchange="this.form.submit( );" valueChangeListener="#{.....}" />
Вообще посмотри здесь - http://www.onjava.com/pub/a/onjava/excerpt...ex1.html?page=2 может найдешь что-нибудь полезное.


PM MAIL   Вверх
Sleepy_PIP
Дата 3.2.2005, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 2
Всего: 12



Цитата(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...ex1.html?page=2 может найдешь что-нибудь полезное.

Вот. вот этого не хватало - this.form.submit( )
Спасибо!
но это еще не все.
Со стороны дергаем бин через какую-то протерть и хочется что-б при этом отображенная страничка перерисовалась ...


Это сообщение отредактировал(а) Sleepy_PIP - 3.2.2005, 08:22


--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Sleepy_PIP
Дата 3.2.2005, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 2
Всего: 12



ага! угу, счаз!
не все так просто оказывается.
<af:selectBooleanCheckbox value="#{ManPage.pFindInOnlyDir}" label="Искать только в каталогах " immediate="true" onchange="this.form.submit( );" valueChangeListener="#{ManPage.ChL1}"> </af:selectBooleanCheckbox>

this.form.submit( ); - срабатывает только 1 раз или вообще не срабатывает smile(.
точнее так.
Первый запуск - кликаем по чек-боксу - ничего. тоесть вообще ничего - и чекбокс не чекится.
Повторные клики на нем-же приводят только к изменению значения чекбокса.
Листенер не вызывается. соотв. сабмит формы отсудствует.


Это сообщение отредактировал(а) Sleepy_PIP - 3.2.2005, 12:18


--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Sleepy_PIP
Дата 3.2.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 2
Всего: 12



нормально так ... на рез. странице вообще нет this.form..submit() smile((.



--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Sleepy_PIP
Дата 3.2.2005, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 2
Всего: 12



а вот так:
<h:selectBooleanCheckbox value="#{ManPage.pFindInOnlyDir}" immediate="true" onchange="this.form.submit();" valueChangeListener="#{ManPage.ChL1}" id="aa2" title="Искать только в каталогах "> </h:selectBooleanCheckbox>
эвент листенер срабатывает, но никаких изменений на форме не отображается. более того - форма не перевыводится. т.е.
Код

       FacesContext.getCurrentInstance().renderResponse();

не более чем пустой звук smile(.
А почему???

причем интересно - пустой звук в IE, а во встроенном браузере (в JBuilder2005) - через раз.
т.е. шелкаем - ничего. щелкаем еще раз - все перевыводится ... и эвент срабатывает по коду бина.
А в IE - вообще все до фонаря. и эвент не срабатывает.
хм. а скрипты у меня разрешены однако!


Это сообщение отредактировал(а) Sleepy_PIP - 3.2.2005, 13:38


--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
Sleepy_PIP
Дата 3.2.2005, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 2
Всего: 12



не, ну вообще финишь smile
Код

       <af:panelGroup type="vertical">
         <af:panelGroup rendered="#{ManPage.pPar1Rendered}">
           <af:selectBooleanCheckbox value="#{ManPage.pFindInFiles}" label="Искать в именах и расширениях файлов">            </af:selectBooleanCheckbox>
           <af:selectBooleanCheckbox value="#{ManPage.pFindInDir}" label="Искать в полных именах каталогов" rendered="#{ManPage.reender1}">            </af:selectBooleanCheckbox>
         </af:panelGroup>
         <af:panelBox>
           <h:selectBooleanCheckbox value="#{ManPage.pFindInOnlyDir}" immediate="true" onchange="this.form.submit();" valueChangeListener="#{ManPage.ChL1}" id="aa2" title="Искать только в каталогах ">            </h:selectBooleanCheckbox>

           <af:selectBooleanCheckbox value="#{ManPage.pFindInOnline}" label="Искать только по online FTP">            </af:selectBooleanCheckbox>
         </af:panelBox>
         <af:inputText label="Колл-во строк результата на странице" maximumLength="3" id="RowsOnPage" value="#{ManPage.pRowsOnPage}" columns="3">
           <af:validateRegExp pattern="[0-9]*"/>
           <f:validateLongRange maximum="100"/>
         </af:inputText>
       </af:panelGroup>



так вот - в IE ManPage.ChL1 срабатывает не на чекании id="aa2", а на чекании
Код

           <af:selectBooleanCheckbox value="#{ManPage.pFindInFiles}" label="Искать в именах и расширениях файлов">            </af:selectBooleanCheckbox>
           <af:selectBooleanCheckbox value="#{ManPage.pFindInDir}" label="Искать в полных именах каталогов" rendered="#{ManPage.reender1}">            </af:selectBooleanCheckbox>



вот так вот!

видимо я глубоко где-то просел. в смысле ошибаюсь.
Кто-нито может помочь?

попробовал подключится не на oncange а на onclick - поведение _точно_ такое-ж ...
фигня какая-то smile.
не, ну смех и грех - во строенном браузере фигня, а в IE теперь хорошо все отрабатывается (если на onclick вешаться),.....
ох, как-ж мне все это не нравится smile((

Это сообщение отредактировал(а) Sleepy_PIP - 3.2.2005, 13:56


--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
igon
Дата 3.2.2005, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: нет
Всего: 21



Покажи не jsf, а html исходник. ИМХО, все эти listener на bin юзеру(html) по барабану и вообще напрямую не доступны.

HTML, генерируемая из myJSF.jsf и подлежащая перезагрузке, должна выглядеть примерно так:
Код

<head>
<script>
function doReload(){
 document.myForm.action = "myJSF.jsf";
 document.myForm.submit();

}
</script>

</head>
<body>
<form name="myForm" action="" method="post">
...
<input type="checkbox" onclick="doReload();">
...
</form>
</body>


1. Обрати внимание на обязательность наличия тега <form>, без него submit() будет делать неизвестно что.
2. Я не уверен в последовательности действий после onClick: сначала ставится/снимается галка, а потом вызывается функция, или наоборот. Если сначала функция, то до галки дело не дойдет - после submit() отправляется запрос или все просто останавливается (как, похоже, в твоем случае). Если до галки дело не дошло - ставь/снимай ее в функции.


--------------------
Хотите поговорить об этом?
PM   Вверх
Sleepy_PIP
Дата 4.2.2005, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 512
Регистрация: 30.6.2004
Где: Moscow

Репутация: 2
Всего: 12



Спасибо!
интуитивно-экспериментально нашел работающий вариант.
выглядит так:
Код

       <af:panelGroup type="vertical">
         <af:panelGroup rendered="#{ManPage.pPar1Rendered}">
           <af:selectBooleanCheckbox value="#{ManPage.pFindInFiles}" label="Искать в именах и расширениях файлов">            </af:selectBooleanCheckbox>
           <af:selectBooleanCheckbox value="#{ManPage.pFindInDir}" label="Искать в полных именах каталогов" rendered="#{ManPage.reender1}">            </af:selectBooleanCheckbox>
         </af:panelGroup>
         <af:panelBox>
           <af:selectBooleanCheckbox value="#{ManPage.pFindInOnlyDir}" immediate="true" valueChangeListener="#{ManPage.ChL1}" id="aa1" label="Искать только в каталогах " onclick="this.form.submit();">            </af:selectBooleanCheckbox>
           <af:selectBooleanCheckbox value="#{ManPage.pFindInOnline}" label="Искать только по online FTP">            </af:selectBooleanCheckbox>
         </af:panelBox>
         <af:inputText label="Колл-во строк результата на странице" maximumLength="3" id="RowsOnPage" value="#{ManPage.pRowsOnPage}" columns="3">
           <af:validateRegExp pattern="[0-9]*"/>
           <f:validateLongRange maximum="100"/>
         </af:inputText>
       </af:panelGroup>



т.е. отрабатываю onClick - при этом листенер:
Код

//=============================================================================
   public void ChL1(ValueChangeEvent ev)
   {
       _FindInOnlyDir=!_FindInOnlyDir;
       if(_FindInOnlyDir)
           _Par1Rendered=false;
       else
           _Par1Rendered=true;
       FacesContext.getCurrentInstance().renderResponse();
   }




срабатывает успешно и везде.
Галка в чекбоксе ставится правильно.
в рез. HTML-е присудствует this.form.submit();
но только если на onClick. на onChange - в рез. HTML-е this.form.submit(); - отсудствует.
Пробую понять почему так ...



--------------------
--
Sleepy_PIP. Pavel Pryazhentsev (ex. 2:5020/141) "... Лучше быть нужным, чем
свободным ..."
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1044 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.