@parkito

Почему контроллер не изменяет атрибутов?

Здравствуйте. Помогите, пожалуйста, решить проблему.

Есть сервлет

@RequestMapping(value = "/adminNewClient", method = RequestMethod.GET)
    public String adminNewClientGet(HttpServletRequest request, Locale locale, Model model) {
        model.addAttribute("nameStat", "ckeck");
        return "admin/adminNewClient";
    }


Он хорошо отрабатывает. Пересылает jsp параметр nameStat.
<tr>
  <td><input id="surName" type="text" class="form-control" placeholder="Surname"></td>
   <td><font color="blue">${nameStat}</font></td>
 </tr>

На странице есть запрос
function popBox() {
                            x = confirm('Are you sure? ');
                            if (x == true) {
                                var xhr = new XMLHttpRequest();
                                xhr.open("DELETE", "adminNewClient?name=" + name + "&surName=" + surName
                                        + "&birthday=" + birthday + "&passport=" + passport
                                        + "&adress=" + adress + "&email=" + email + "&number=" + number, false);
                                xhr.send();

                            }
                        }


Он отправляет на сервлет параметры.

@RequestMapping(value = "/adminNewClient", method = RequestMethod.DELETE)
    public String adminNewClientPost(HttpServletRequest req, Locale locale, Model model,
                                     @RequestParam(value = "name") String name,
                                     @RequestParam(value = "surName") String secondName,
                                     @RequestParam(value = "birthday") String birthdayDate,
                                     @RequestParam(value = "passport") String passport,
                                     @RequestParam(value = "adress") String adress,
                                     @RequestParam(value = "email") String eMail,
                                     @RequestParam(value = "number") String number) {
        model.addAttribute("nameStat", "YES!"))
   return "admin/adminNewClient";
    }


Получается. этот сервлет должен изменить nameStat и на странице должно появиться YES!. Но этого не происходит! Хотя, вижу, что method = RequestMethod.DELETE отработал. Почему данный сервлет не меняет параметр на странице?
  • Вопрос задан
  • 324 просмотра
Решения вопроса 1
@void01
он не должен ничего поменять на странице, он должен в ответе прислать тебе новое тело страницы с YES!
посмотри респонс в нетворк таб дев тулза

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

@RequestMapping(value = "/adminNewClient", method = RequestMethod.DELETE)
    public @ResponseBody Map adminNewClientPost(HttpServletResponse response, HttpServletRequest request,
                                     @RequestParam(value = "name") String name,
                                     @RequestParam(value = "surName") String secondName,
                                     @RequestParam(value = "birthday") String birthdayDate,
                                     @RequestParam(value = "passport") String passport,
                                     @RequestParam(value = "adress") String adress,
                                     @RequestParam(value = "email") String eMail,
                                     @RequestParam(value = "number") String number) {
     LinkedHashMap result = new LinkedHashMap();
     result.put("nameStat","YES!");
     return result;
  }

в JSP
<tr>
  <td><input id="surName" type="text" class="form-control" placeholder="Surname"></td>
   <td><span style="color:blue;" id="nameStat">${nameStat}</span></td>
 </tr>

в JS
function popBox() {
                            x = confirm('Are you sure? ');
                            if (x == true) {
                                var xhr = new XMLHttpRequest();
xhr.onload = function(){
var jsonResponse = JSON.parse(this.responseText);
for(var index in jsonResponse) { 
   if (jsonResponse.hasOwnProperty(index)) {
      document.getElementById(index).innerText = jsonResponse[index];
   }
}
};
                                xhr.open("DELETE", "adminNewClient?name=" + name + "&surName=" + surName
                                        + "&birthday=" + birthday + "&passport=" + passport
                                        + "&adress=" + adress + "&email=" + email + "&number=" + number, false);
                                xhr.send();

                            }
                        }


соответственно на странице ты можешь иметь сколько угодно элементов которые тебя надо динамически поменять, просто добавь их в респонс result.put("тут айди хтмл элемента","тут новый текст");
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
20 апр. 2024, в 13:23
1000 руб./за проект
20 апр. 2024, в 12:50
30000 руб./за проект
20 апр. 2024, в 12:01
20000 руб./за проект