powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF and AJAX, примеры, хелп
7 сообщений из 7, страница 1 из 1
JSF and AJAX, примеры, хелп
    #33708308
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JavaScript совсем не знаю :( нарыл такой пример

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
<html>
<head>

<script type='text/javascript'>

var req= null ;
var console= null ;
var READY_STATE_UNINITIALIZED= 0 ;
var READY_STATE_LOADING= 1 ;
var READY_STATE_LOADED= 2 ;
var READY_STATE_INTERACTIVE= 3 ;
var READY_STATE_COMPLETE= 4 ;

function loadXMLDoc(url) {
     if  (window.XMLHttpRequest) {
        req =  new  XMLHttpRequest();
    }  else   if  (window.ActiveXObject) {
        req =  new  ActiveXObject("Microsoft.XMLHTTP");
    }
     if  (req) {
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send( null );
    }

}

function processReqChange(){
  var ready=req.readyState;
  var data= null ;
   if  (ready==READY_STATE_COMPLETE){
    data=req.responseText;
  } else {
    data="loading...["+ready+"]";
  }
  toConsole(data);
}


function toConsole(data){
   if  (console!= null ){
    var newline=document.createElement("div");
    console.appendChild(newline);
    var txt=document.createTextNode(data);
    newline.appendChild(txt);
  }
}

window.onload=function(){
  console=document.getElementById('console');
  loadXMLDoc("data.txt");
}
</script>

</head>
<body>
<div id='console'></div>
</body>
</html>




более менее все понятно, но как изменить этот пример, чтобы он соответствовал слудующим требованиям:

- window.onload=function() - вместо этого, нужно чтобы запрос посылался каким-либо таймером, т.к. JSF компанент должен автоматически обновлятся через указанный промежуток времени

- нужно посылать запрос POST и главное, нужно еще как-то передать все параметры(скрытые поля и т.д.) формы, в которой находится компанент. Иначе faces servlet ничего не поймет.

- сам компанент предстовляет из себя таблицу, после каждого обновления, если на сервере появились новые данные, должны добавлятся строки к этой таблице.


И еще, может кто даст ссылку на пример JSF AJAX компанента, только не посылайте к ADF Faces или MyFaces, там с ходу не разобратся.
...
Рейтинг: 0 / 0
JSF and AJAX, примеры, хелп
    #33708737
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) Таймаут можно сделать примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
window.onload=function(){
// по тамеру будет вызывать функцию load() 
   window.setTimeout(‘load();’,  50 );
}

function load(){
  console=document.getElementById('console');
  loadXMLDoc("data.txt");
}
2) Отправка данных постом (модифицируем Вашу функцию немного):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
function loadXMLDoc(url) {
     if  (window.XMLHttpRequest) {
        req =  new  XMLHttpRequest();
    }  else   if  (window.ActiveXObject) {
        req =  new  ActiveXObject("Microsoft.XMLHTTP");
    }
     if  (req) {
      req.onreadystatechange = processReqChange;

      // говорим, что используем post 
      req.open("POST", url, true);

      // устанавливаем контент-тайп
      req.setRequestHeader("Content-Type",
		"application/x-www-form-urlencoded");

      // параметры запроса (те самые поля формы)
      var params = "action=add& item=item”;

      // посылаем параметры
      req.send(params);
    }	
}
должно cработать.
Если не получится пишите...

3)К сожалению, с JSF пока не работаю, но есть примеры, скажем, для Tapestry.
...
Рейтинг: 0 / 0
JSF and AJAX, примеры, хелп
    #33709192
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо.

почемуто не срабатывает таймер, при первой загрузке страницы или при обновлении запрос посылается, а далее нет. Браузер файрфокс.
...
Рейтинг: 0 / 0
JSF and AJAX, примеры, хелп
    #33709278
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сори. А если так попробовать?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
window.onload=function(){
  load();   
}

function load(){
  console=document.getElementById('console');
  loadXMLDoc("data.txt");

// по тамеру будет вызывать функцию load() снова и снова 
  setTimeout('load();',  50 );
}
...
Рейтинг: 0 / 0
JSF and AJAX, примеры, хелп
    #33709314
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, сейчас попробую.

а не подскажешь, как сделать следующее: ответом на мой запрос будет <table>...</table>, вобщем новая таблица, как мне удалить старую и за место нее поместить новую, id старой таблиции известен.
...
Рейтинг: 0 / 0
JSF and AJAX, примеры, хелп
    #33709324
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
таймер заработал
...
Рейтинг: 0 / 0
JSF and AJAX, примеры, хелп
    #33709392
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-моему надо еще и парента знать для этого. По крайней мере я с ИД парента тоже храню для этого.

Так вот если нам ИД элемента и его парента известны, то можно сделать примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
    var element = document.getElementById(elementId);
    var parent = document.getElementById(parentId);

     if  (element !=  null  && parent!= null ) {
            parent.removeChild(element);
    }

Ну а потом по новой вставляйте таблицу в того же парента appendChild()-ом. Вроде должно работать...

(хотя это больше по javascript вопрос, чем по java...)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JSF and AJAX, примеры, хелп
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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