Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF: как вызвать JavaScript на странице из java? / 21 сообщений из 21, страница 1 из 1
08.04.2014, 11:23
    #38608141
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
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
08.04.2014, 13:01
    #38608342
For All
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
Надо отослать запрос на сервер (ajax), который проведёт валидацию и вернёт ответ. После получения ответа на клиентской стороне запустить скрипт.
...
Рейтинг: 0 / 0
08.04.2014, 13:24
    #38608395
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
Код должен быть примерно такой:
Код: 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
08.04.2014, 13:30
    #38608411
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
Другой вариант, если неохота / нет возможности работать с отдельным потоком, попробовать запустить метод через ajax:
Код: html
1.
2.
3.
<p:commandButton id="btn" value="Do somthing" 
	update="panel" oncomplete="start();{и запуск userBean.recover с помощью ajax}" 
	widgetVar="startButton" />
...
Рейтинг: 0 / 0
08.04.2014, 14:36
    #38608551
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
rema174Это возможно реализовать?

Нет.
...
Рейтинг: 0 / 0
08.04.2014, 14:44
    #38608564
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
ShSerge,
вы хотите сказать, что написаное ранее не сработает?
...
Рейтинг: 0 / 0
08.04.2014, 14:44
    #38608566
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
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
08.04.2014, 21:32
    #38609040
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
допустим, это можно реализовать, чтобы запустить long term process в отдельном потоке и вернуться на исходную страницу, но этот процесс подразумевает переход на другую странцу после своего завершения - т.е. возможно ли будет из кода перейти на другую станицу в браузере в том же самом окне (и в том же самом табе) ?
...
Рейтинг: 0 / 0
08.04.2014, 22:17
    #38609068
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
Тогда второй вариант
Код: 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
08.04.2014, 22:54
    #38609090
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
rema174 возможно ли будет из кода перейти на другую станицу в браузере в том же самом окне (и в том же самом табе) ?

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

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

в бине есть поле
Код: 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
09.04.2014, 08:44
    #38609280
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
точно, берет из кеша...

тогда, как это совместить с обновлением значений из бина?
<script>location.href=............</script>
...
Рейтинг: 0 / 0
09.04.2014, 09:04
    #38609297
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
добавил в хедер <meta http-equiv="Cache-control" content="no-cache" /> - не работает
...
Рейтинг: 0 / 0
09.04.2014, 09:13
    #38609309
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
location.href='index.xhtml?eraseCache=true'; тоже не работает
...
Рейтинг: 0 / 0
09.04.2014, 09:21
    #38609321
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
хм, что происходит? добавил
Код: 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
09.04.2014, 09:23
    #38609326
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
Скорее всего, дело не в кеше.
Если это отдельный поток, то он работает вне контекста. Запустив поток и вернув управление, приложение освобождает контекст. Это означает, что бин сериализуется и отправляется в мусор, либо в пул. При следующем запросе он создается заново, либо берется из пула, а его состояние (если бин сессионный) десериализуется.
Таким образом, если вы запомнили в потоке ссылку на бин (даже сессионный), чтобы использовать её при завершении работы, то это сслыка на мусорную кучу, либо на бин в пуле, который даже если и совпадет, всё равно его состояние будет потеряно после десериализации.
Поэтому тут надо передавать данные либо через persistence, либо использовать последовательные вызовы, как во 2 подходе
...
Рейтинг: 0 / 0
09.04.2014, 20:42
    #38610467
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
Странное дело, стоит мне один раз обновить итоговую страницу и это сообщение появляется.
при следующих входах-выходах(закрытие сессии) уже ничего обновлять не нужно, т.к. это сообщение появляется всегда. Но при только запущенном приложении, ситуация как было описано раннее.
...
Рейтинг: 0 / 0
09.04.2014, 20:46
    #38610471
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
хотя нет, ошибочка. верно только то, что при обновлении страницы можно получить то сообщение.
...
Рейтинг: 0 / 0
10.04.2014, 12:39
    #38611055
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
выкрутился, передавая параметр запроса в js
и кто тут говорил, что это невозможно? :-)
...
Рейтинг: 0 / 0
13.04.2014, 14:53
    #38613543
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSF: как вызвать JavaScript на странице из java?
Теперь такой вопрос: есть способ запускать start() не просто по oncomplete, а именно после успешной валидации?

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


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