2017-02-15 17 views
0

Я хотел бы обновить div на странице .jsp после отправки формы. Таким образом, поток будет выглядеть так: Представленная форма -> Функция Ajax вызывается и указывает на URL-адрес метода моего контроллера -> Обработана функция и добавляет новый атрибут к модели -> Вернуть один и тот же вид. Проблема в том, что представление не обновляется новыми атрибутами.Как обновить один и тот же вид (.jsp) с помощью model.addAttributes? | Spring MVC

Это называется после отправки.

$("#search-form").submit(function(){ 
    var search = $("#search-bar-input").val(); 
    $.ajax({ 
     url : 'search', 
     method : 'get', 
     data : {search : search}, 
     async : false, 
     complete : function(data) { 
      console.log(data.responseText); 
     } 
    }); 
}) 

Тогда он идет сюда.

@RequestMapping(value = "/search", method = RequestMethod.GET) 
public String search(ModelMap model, @RequestParam String search) { 
    System.out.println(search); 

    List<Film> films = filmJDBCTemplate.getFilmByName(search); 

    model.addAttribute("films", films);  

    return "home"; 
} 

Затем я заметил, что в этой функции он снова появляется.

@RequestMapping(value = "/", method = RequestMethod.GET) 
public String displayHome(ModelMap model, HttpSession session) { 

// Display all genres 
    List<Genre> listGenre = genreJDBCTemplate.listGenres(); 
    List<String> listGenreNom = new ArrayList<String>(); 

    for (Genre g : listGenre){ 
     listGenreNom.add(g.getNom()); 
    } 

    model.addAttribute("listGenreNom", listGenreNom); 

    String nom = accessData.getClient().getNomFamille() + " " + accessData.getClient().getPrenom(); 
    model.addAttribute("nom", nom);  
    return "home"; 
} 

Это часть страницы jsp, которую необходимо обновить.

<div id="movies-div"> 
    <c:forEach var="film" items="${films}">     
     <div class="movie"> 
      <div class="poster-div"> 
       <img class="poster" src="${film.poster}" /> 
      </div> 
      <div class="title-div"> 
        ${film.titre}    
      </div> 

     </div> 
    </c:forEach> 
</div> 

Это, безусловно, почему моя страница не обновляется. Я искал несколько дней, как решить эту проблему, но я не мог найти никаких подобных случаев для моего.

Пожалуйста, предложите мне некоторые способы сделать это. Большое спасибо !

+0

хорошо вы, вероятно, нужно добавить код в 'полной: функции (данные) { console.log (data.responseText); } ' –

+0

, так что это невозможно сделать так, как я сделал выше? Я имею в виду использование mode.addAtributes ("newAttribute", newAttribute) и возврат одного и того же представления? – nytochin

+0

Я так не думаю. JSP уже предоставлен. Являются ли правильные данные в 'data.responseText'? –

ответ

0

Попробуйте изменить возвращаемые значения данными, которые вы хотите отобразить, вместо имени jsp.

@RequestMapping(value = "/search", method = RequestMethod.GET) 
public String search(ModelMap model, @RequestParam String search) { 
    System.out.println(search); 

    List<Film> films = filmJDBCTemplate.getFilmByName(search); 

    return films; 
}