powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF: как вызвать JavaScript на странице из java?
21 сообщений из 21, страница 1 из 1
JSF: как вызвать JavaScript на странице из java?
    #38608141
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cейчас, по нажатию на кнопку вызывается javascript, котрый запускает компонент progressBar,
но нужно чтобы javascript вызывался позднее из джава кода (уже после валидаций).
Это возможно реализовать?

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<script type="text/javascript">
		function start() {
			...
		}
</script>

...

<p:commandButton id="btn" value="Do somthing" 
	update="panel" action="#{userBean.recover}" onclick="start()" 
	widgetVar="startButton" />

<p:progressBar id="progressBarClient" widgetVar="pbClient" />
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38608342
For All
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо отослать запрос на сервер (ajax), который проведёт валидацию и вернёт ответ. После получения ответа на клиентской стороне запустить скрипт.
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38608395
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код должен быть примерно такой:
Код: html
1.
2.
3.
<p:commandButton id="btn" value="Do somthing" 
	update="panel" action="#{userBean.recover}" oncomplete="start()" 
	widgetVar="startButton" />


Обработчик oncomplete, естественно, вызовется только после того, как метод userBean.recover() вернет управление, поэтому, если там процесс длительный, следует запускать его в отдельном потоке, и сразу возвращать управление.
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38608411
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Другой вариант, если неохота / нет возможности работать с отдельным потоком, попробовать запустить метод через ajax:
Код: html
1.
2.
3.
<p:commandButton id="btn" value="Do somthing" 
	update="panel" oncomplete="start();{и запуск userBean.recover с помощью ajax}" 
	widgetVar="startButton" />
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38608551
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174Это возможно реализовать?

Нет.
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38608564
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShSerge,
вы хотите сказать, что написаное ранее не сработает?
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38608566
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ivanraКод должен быть примерно такой:
Код: html
1.
2.
3.
<p:commandButton id="btn" value="Do somthing" 
	update="panel" action="#{userBean.recover}" oncomplete="start()" 
	widgetVar="startButton" />


Обработчик oncomplete, естественно, вызовется только после того, как метод userBean.recover() вернет управление, поэтому, если там процесс длительный, следует запускать его в отдельном потоке, и сразу возвращать управление.

попробую сделать
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38609040
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
допустим, это можно реализовать, чтобы запустить long term process в отдельном потоке и вернуться на исходную страницу, но этот процесс подразумевает переход на другую странцу после своего завершения - т.е. возможно ли будет из кода перейти на другую станицу в браузере в том же самом окне (и в том же самом табе) ?
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38609068
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда второй вариант
Код: html
1.
2.
3.
<p:commandButton id="btn" value="Do somthing" 
	update="panel" oncomplete="start();{и запуск userBean.recover с помощью ajax}" 
	widgetVar="startButton" />


в richfaces то, что фигурных скобочках, реализуется с помощью aj4:function, в primefaces вроде бы можно с помощью p:remoteCommand
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38609090
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174 возможно ли будет из кода перейти на другую станицу в браузере в том же самом окне (и в том же самом табе) ?

<script>location.href=............</script>
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38609274
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а ведь почти получилось...

я пока не понял как это аяксом замусолить, но скомбинировав первый подход с процессом, и с советом "забыл ник", мне удалось таки перейти на нужную страницу, но осталась вот что

в бине есть поле
Код: java
1.
private String passwordChanged; // изначально пустое


во внутреннем классе меняем passwordChanged:
Код: java
1.
2.
3.
4.
5.
@Override
	public void run() {
		// do proces
		passwordChanged = "Новый пароль установлен";
}


на странице есть
Код: html
1.
<p>#{userBean.passwordChanged}</p>


но когда переход на страницу осуществлен, мне как раз и не показывает значение passwordChanged
при этом бин сессионный

браузер взял страницу из кэша?
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38609280
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точно, берет из кеша...

тогда, как это совместить с обновлением значений из бина?
<script>location.href=............</script>
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38609297
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добавил в хедер <meta http-equiv="Cache-control" content="no-cache" /> - не работает
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38609309
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
location.href='index.xhtml?eraseCache=true'; тоже не работает
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38609321
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм, что происходит? добавил
Код: xml
1.
2.
3.
4.
5.
6.
7.
<h:body onload="doLoad()">
	<script language="JavaScript">
	<!--
    // we put this here so we can see something change
    document.write('<b>' + (new Date).toLocaleString() + '</b>');
	//-->
	</script>


время меняется, а текст не появляется
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38609326
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скорее всего, дело не в кеше.
Если это отдельный поток, то он работает вне контекста. Запустив поток и вернув управление, приложение освобождает контекст. Это означает, что бин сериализуется и отправляется в мусор, либо в пул. При следующем запросе он создается заново, либо берется из пула, а его состояние (если бин сессионный) десериализуется.
Таким образом, если вы запомнили в потоке ссылку на бин (даже сессионный), чтобы использовать её при завершении работы, то это сслыка на мусорную кучу, либо на бин в пуле, который даже если и совпадет, всё равно его состояние будет потеряно после десериализации.
Поэтому тут надо передавать данные либо через persistence, либо использовать последовательные вызовы, как во 2 подходе
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38610467
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странное дело, стоит мне один раз обновить итоговую страницу и это сообщение появляется.
при следующих входах-выходах(закрытие сессии) уже ничего обновлять не нужно, т.к. это сообщение появляется всегда. Но при только запущенном приложении, ситуация как было описано раннее.
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38610471
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя нет, ошибочка. верно только то, что при обновлении страницы можно получить то сообщение.
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38611055
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выкрутился, передавая параметр запроса в js
и кто тут говорил, что это невозможно? :-)
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38613543
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Теперь такой вопрос: есть способ запускать start() не просто по oncomplete, а именно после успешной валидации?

<p:commandButton id="btn" value="Do somthing"
update="panel" action="#{userBean.recover}" oncomplete="start()"
widgetVar="startButton" />
...
Рейтинг: 0 / 0
JSF: как вызвать JavaScript на странице из java?
    #38613688
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вопрос закрыт
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF: как вызвать JavaScript на странице из java?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]