Обновление элемента DIV с фрагментом кода JSP внутри - PullRequest
2 голосов
/ 30 ноября 2010

У меня есть страница JSP, на которой я читаю атрибуты сеанса, которые я установил в сеансе.

Я хочу читать атрибуты сеанса через регулярные промежутки времени.Я не хочу перезагружать всю страницу, я просто сохраняю атрибуты чтения сеанса JSP в моем DIV и пытаюсь перезагрузить DIV.Но это не перезагрузка DIV.

Вот моя база кода:

<html>
  <head>
  // Loading CSS and Script files
  </head>
  <body>
    <div id="loadData" style='display:none;'>
         <% 
           String strStatus = String.valueOf(session.getAttribute("Status")) ;
          %>
    </div>
  </body>
  <script type="text/javascript">
    var reqStatus = '<%= strStatus %>';

    $(this).load(function(){
       setInterval(function() {
            $("#loadData").load();
          } ,1000);
     });
     $("#loadData").load(function(){
        if(reqStatus == 'Done') {
        // My Code goes here..
        }
     });
</html>

Любые лучшие идеи также приветствуются.

Ответы [ 3 ]

2 голосов
/ 01 декабря 2010

Ваш JSP-код оценивается только один раз - при первой загрузке страницы.Когда код JSP выполняется, HTML генерируется и отправляется в браузер.Вы не можете «перезагрузить» div таким образом;код JSP не будет работать.

Что вы можете сделать, это поместить код JSP в отдельный файл и затем использовать jQuery.load для загрузки этой страницы в div:

jQuery(document).ready(function() {
   setInterval(function() {
       jQuery('#loadData').load('/status.jsp');
   }, 1000);
}

status.jsp будет содержать только одну строку:

<%= String.valueOf(session.getAttribute("Status")) ; %>
2 голосов
/ 01 декабря 2010

JSP визуализируется один раз на сервере, а затем отправляется клиенту, после чего код Java ничего не делает.Вы не можете поместить код HTML / javascript и код Java в один и тот же файл, если хотите, чтобы они загружались с разным временем / частотой.

Поместите это в отдельный файл .jsp:

<%= String.valueOf(session.getAttribute("Status")) ; %>

Предположим, что он сопоставлен с каким-либо URL /checkStatus.jsp

Удалите div loadData, потому что он вам больше не нужен.Замените свой JavaScript на:

var reloadStatus = function () {
    $.ajax("/checkStatus.jsp", function (data) {
        if (data == "Done") {
            // Your code here
        }
    });
};

setInterval(reloadStatus, 1000);
1 голос
/ 01 декабря 2010

Код в JSP компилируется / выполняется до того, как полученный HTML-код отправляется в браузер.Вы не можете перезагрузить часть страницы как отрендеренную и ожидать, что она изменится.Вам, вероятно, потребуется создать скрытый iframe и загрузить его полностью (легко) или создать веб-сервис для запроса параметров (сложнее).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...