Как перезагрузить HTML-таблицу без обновления всей страницы при работе с Spring MVC

Я использую Spring MVC, файл example.jsp с Javascript.
Я застрял на этом долгое время.

Можно ли использовать Javascript для загрузки новых данных из БД в таблицы HTML без обновления всей страницы?

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


person Narayan    schedule 17.09.2012    source источник
comment
Да, это так. Что ты пробовал?   -  person sp00m    schedule 17.09.2012
comment
Немного. Проработав 3 года в Desktop с java и spring, мне исполнился месяц в Интернете, поэтому я не пробовал много sP00m, просмотрел около 30-40 ссылок в Интернете ... ничего не информирует меня о Spring MVC.   -  person Narayan    schedule 17.09.2012


Ответы (1)


Если вы хотите перезагрузить часть своей страницы с помощью JavaScript, в основном AJAX.
Вот как вы должны это сделать.

Сторона клиента

Предположим, вы используете jQuery в качестве платформы JavaScript.
Вам необходимо использовать jQuery.ajax () на стороне клиента.

var successHandler = function( data, textStatus, jqXHR ) {
  // After success reload table with JavaScript
  // based on data...
};

var errorHandler = function( jqXHR, textStatus, errorThrown ) {
  // Error handler. AJAX request failed.
  // 404 or KO from server...
  alert('Something bad happened while reloading the table.');
};

var reloadData = function() { 
  // Process your request
  var request = new Object();
  request.id = 'some id'; // some data

  // Make the AJAX call
  jQuery.ajax({
    type       : 'POST',
    url        : 'http://domain/context/reload-data-url',
    contentType: 'application/json',
    data       : JSON.stringify(request)
    success    : successHandler,
    error      : errorHandler
  });
};

Вызовите функцию reloadData(), когда вам нужно перезагрузить таблицу.

Сторона сервера

Вы используете Spring MVC. Тогда ваш контроллер должен выглядеть так:

 // Spring MVC Controller
 @Controller
 public class ReloadDataController {

   // Request Mapping
   @RequestMapping(value = '/reload-data-url', method = RequestMethod.POST)
   @ResponseBody
   public ResponseEntity<String> processReloadData(@RequestBody String body) {

     // Get your request
     JSONObject request = new JSONObject(body);
     String id = request.getString("id"); // Here the value is 'some id'

     // Get the new data in a JSONObject
     JSONObject response = new JSONObject();
     // build the response...

     // Send the response back to your client
     HttpHeaders headers = new HttpHeaders();
     headers.add("Content-Type", "application/json; charset=utf-8");
     return new ResponseEntity<String>(response.toString(),
                headers, HttpStatus.OK);
   }

 }

Вам не обязательно использовать JSON, но я думаю, что это лучший способ. Надеюсь, что это поможет вам.

person Florian Parain    schedule 17.09.2012