Spring Boot Ajax отправьте форму с моделью и тимьяном - PullRequest
0 голосов
/ 25 октября 2018

У меня есть контроллер начальной загрузки, который возвращает представление, и я хотел изменить его, используя конечную точку ajax, но в то же время получить значения из формы с помощью атрибута modelAttribute, а затем отправить список или несколько списков на странице.и перебирать эти списки с помощью тимелина. Возможно ли это?Вот контроллер:

@RequestMapping(value="/search", method=RequestMethod.POST)
    @ResponseBody
    public String search(@ModelAttribute("specification") Specification specification, Model model) {

        List<SearchResultAutovit> list;

        list = scrapper.searchMethod(specification.getPrice,specification.getModel);

        if (list == null || list.isEmpty()) { 
            model.addAttribute("msg","Something"); 
        } else { 
            model.addAttribute("listaAutovit", list); 
        }
        return "?";
    }

Запрос Ajax:

$(".btn.btn-danger").on('click', {function fire_ajax_submit() {
    var str = $(".form-inline.justify-content-center").serialize();

    $.ajax({
        type:"post",
        data:str,
        url:"/search",
        async: false,
        dataType: "json",
        success: function(){
           alert("success");
        }
    });

}

Я не хочу манипулировать страницей из части успеха ajax, потому что я уже делаю это с тимелием, когдаМодель отправлена ​​на страницу.

1 Ответ

0 голосов
/ 25 октября 2018

Итак, вы хотите получить фрагмент Thymeleaf с помощью запроса ajax.Вы можете добиться этого, изменив код для следующего и добавив фрагмент, в который вы добавите свои атрибуты.Мы создадим файл html с именем list, где у нас будет фрагмент.

Фрагмент Thymeleaf

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<th:block th:fragment="list">
    <th:block th:if="${list != null}">
        <th:block th:each="iterator: ${list}">
            <!-- Do something -->
        </th:block>
    </th:block>
    <th:block th:if="${msg != null}">
        <p th:text=${msg}></p>
    </th:block>
</th:block>
</body>
</html>

Контроллер

@RequestMapping(value="/search")
public String search(@ModelAttribute("specification") Specification specification, Model model) {

    List<SearchResultAutovit> list;

    list = scrapper.searchMethod(specification.getPrice,specification.getModel);

    if (list == null || list.isEmpty()) { 
        model.addAttribute("msg", "Error!");
        model.addAttribute("list", list);
    } else { 
        model.addAttribute("list", list);
        model.addAttribute("msg", null);
    }
    return "layouts/list :: list";
}

Тогда на вашем ajax вам просто нужно получить результат и добавить его к элементу.

$.ajax({
    type:"post",
    data:str,
    url:"/search",
    dataType: "json",
    success: function(result){
       $(element).append(result);
    }
});

Надеюсь, это поможет.

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