2016-04-25 2 views
0

Это моя проблема: у меня есть jsp со столом, использующей datatables. Он отображает некоторых пользователей с кнопками редактирования в конце таблицы. Если вы нажмете кнопку «Изменить», она вызывает функцию javascript, получая идентификатор пользователя из таблицы и передавая ее с помощью метода ajax $post. в сервлет. Сервлет получает данные из базы данных через спящий режим и отображает их в объекты. Мой код работает до этого момента. Теперь я хочу передать объекты в jsp и открыть его в новом окне (всплывающее окно или что-то вроде формы для установки их с данными из объектов для редактирования вызываемого пользователя).Как передавать данные в jsp и открывать его в новом окне из сервлета

  • Могу ли я сделать это с сервлета? Или мне нужно сделать это от ajax, когда звонок преуспеет?

ответ

0

Есть два подхода, чтобы сделать это: на стороне клиента Предоставление или на стороне сервера визуализации:

1.Server Side

Вам не нужно, что сервлет, что вам нужно, это сделайте свой второй JSP-файл для формы ввода. И в вашем Javascript, откройте новое окно с въездной Форма JSP адрес страницы и добавить USERID параметр в строке запроса этой страницы:

function onRowClick(userId){ 
    //Open new window with the address: 'formEntry.jsp?userId=' + userId 
} 

И в formEntry.jsp вы можете получить этот идентификатор из запроса Params:

String userId = request.getParameter("userId"); 

затем вы можете использовать этот идентификатор пользователя, чтобы восстановить свой пользовательский объект:

//get user from dao or service objects 
User myUser = someUserService.findUserById(userId); 

, а затем на странице JSP вы можете создавать свои поля ввода, как это:

<input name="firstName" type="String" value="<%= myUser.getFirstName %>" 

Об использовании кода Java в JSP (комментарий): Вы пишут о не писать Java код страницы JSP, но для этого у вас есть 2 варианта:

  • использовать некоторые стороне сервера фреймворка как JSF отделить представление от модели и контроллера
  • используйте чистый JSP, но не использовать нижние слои уровня в JSP, только службы слоя, а также лучше иметь несколько библиотек тегов, чтобы уменьшить необходимый код Java внутри JSPs


2.Client Side

Второй способ заключается в использовании более JavaScript для решения этой задачи. Вы можете пойти с помощью своего сервлета и вернуть ваш сервлет объекта JSON String of User. В JavaScript, вы получите JSON и разобрать его и поместить его поля внутри HTML-теги:

function ajaxRequestSuccessHandler(data){ 
    var user = //parse data and make a javascript object 
    document.getElementById('firstName').value = user.firstName; 
    .... 
    //load all of data in your form. 
} 

, а затем вы можете отправить форму на сервлет и сохранить обновленные данные.

  • Обратите внимание, что этот подход хорош для 1 или 2 формы, но если вы разрабатываете большое программное обеспечение, вам необходимо использовать некоторые дополнительные инструменты и механизмы:

1.It лучше использовать JAX- RS или Spring-MVC, чтобы предоставлять услуги RESTful и использовать тему в javascript вместо этого с чистыми сервлетами.

2.Better использовать некоторые MV * на стороне клиента, такие как angularJS или ReactJS.

+0

Это хорошая идея, спасибо. Я хочу избежать javacode в jsp-файлах, поэтому я назвал сервлет. Итак, есть ли у вас какие-либо идеи, как использовать обходное решение без кода в jsp? Я думал использовать другой ajax в formEntry.jsp для получения userdetails. – user3189986

+0

Ваш прием, обновите мой ответ –

Смежные вопросы